{"id":2533,"date":"2025-03-24T08:47:05","date_gmt":"2025-03-23T23:47:05","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=2533"},"modified":"2025-03-24T08:47:35","modified_gmt":"2025-03-23T23:47:35","slug":"laravel%e8%a8%ad%e5%ae%9a%e5%ae%8c%e5%85%a8%e3%82%ac%e3%82%a4%e3%83%892024%ef%bc%9a%e5%88%9d%e5%bf%83%e8%80%85%e3%81%a7%e3%82%82%e3%82%8f%e3%81%8b%e3%82%8b%e8%a8%ad%e5%ae%9a%e3%83%95%e3%82%a1%e3%82%a4","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=2533","title":{"rendered":"Laravel\u8a2d\u5b9a\u5b8c\u5168\u30ac\u30a4\u30c92024\uff1a\u521d\u5fc3\u8005\u3067\u3082\u308f\u304b\u308b\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u57fa\u790e\u304b\u3089\u5b9f\u8df5\u7684\u306a\u30c6\u30af\u30cb\u30c3\u30af\u307e\u3067"},"content":{"rendered":"\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">Laravel\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u7406\u89e3\u3057\u3088\u3046<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-1\">\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u57fa\u672c\u69cb\u9020\u3068\u914d\u7f6e\u5834\u6240<\/a>      <\/li>      <li>        <a href=\"#i-2\">env\u30d5\u30a1\u30a4\u30eb\u3068config\u30d5\u30a1\u30a4\u30eb\u306e\u9055\u3044\u3068\u4f7f\u3044\u5206\u3051<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-3\">\u8a2d\u5b9a\u5024\u306e\u53d6\u5f97\u65b9\u6cd5\u3068\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-4\">\u5b9f\u8df5\u7684\u306a\u8a2d\u5b9a\u7ba1\u7406\u30c6\u30af\u30cb\u30c3\u30af<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-5\">\u30ab\u30b9\u30bf\u30e0\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210\u3068\u5229\u7528\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-6\">\u74b0\u5883\u3054\u3068\u306e\u8a2d\u5b9a\u5024\u306e\u5207\u308a\u66ff\u3048\u65b9<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-7\">\u8a2d\u5b9a\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u306b\u3088\u308b\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-8\">\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-9\">\u6a5f\u5bc6\u60c5\u5831\u306e\u5b89\u5168\u306a\u7ba1\u7406\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-10\">\u74b0\u5883\u5909\u6570\u3092\u4f7f\u7528\u3059\u308b\u969b\u306e\u6ce8\u610f\u70b9<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-11\">\u672c\u756a\u74b0\u5883\u3067\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-12\">\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u30c7\u30d0\u30c3\u30b0<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-13\">\u3088\u304f\u3042\u308b\u8a2d\u5b9a\u95a2\u9023\u306e\u30a8\u30e9\u30fc\u3068\u89e3\u6c7a\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-14\">\u8a2d\u5b9a\u5024\u304c\u6b63\u3057\u304f\u8aad\u307f\u8fbc\u307e\u308c\u306a\u3044\u5834\u5408\u306e\u5bfe\u51e6\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-15\">\u958b\u767a\u74b0\u5883\u3067\u306e\u30c7\u30d0\u30c3\u30b0\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-16\">\u8a2d\u5b9a\u7ba1\u7406\u306e\u73fe\u5834\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-17\">\u5927\u898f\u6a21\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u8a2d\u5b9a\u7ba1\u7406\u8853<\/a>      <\/li>      <li>        <a href=\"#i-18\">\u30c1\u30fc\u30e0\u958b\u767a\u306b\u304a\u3051\u308b\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u5171\u6709\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-19\">CI\u30c4\u30fc\u30eb\u3068\u306e\u9023\u643a\u306b\u3088\u308b\u81ea\u52d5\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>    <\/ul>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">Laravel\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u7406\u89e3\u3057\u3088\u3046<\/h2>\n\n\n\n<p>Laravel\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u304a\u3051\u308b\u8a2d\u5b9a\u7ba1\u7406\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u306e\u91cd\u8981\u306a\u57fa\u76e4\u3068\u306a\u308a\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u3001\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u57fa\u672c\u304b\u3089\u5b9f\u8df5\u7684\u306a\u4f7f\u3044\u65b9\u307e\u3067\u3001\u8a73\u3057\u304f\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-1\">\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u57fa\u672c\u69cb\u9020\u3068\u914d\u7f6e\u5834\u6240<\/h3>\n\n\n\n<p>Laravel\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f\u3001<code>config<\/code>\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u914d\u7f6e\u3055\u308c\u3066\u304a\u308a\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u69d8\u3005\u306a\u8a2d\u5b9a\u3092\u7ba1\u7406\u3057\u307e\u3059\u3002\u4e3b\u8981\u306a\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306b\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u3082\u306e\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>app.php<\/code>: \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u57fa\u672c\u8a2d\u5b9a<\/li>\n\n\n\n<li><code>database.php<\/code>: \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u8a2d\u5b9a<\/li>\n\n\n\n<li><code>mail.php<\/code>: \u30e1\u30fc\u30eb\u9001\u4fe1\u8a2d\u5b9a<\/li>\n\n\n\n<li><code>cache.php<\/code>: \u30ad\u30e3\u30c3\u30b7\u30e5\u8a2d\u5b9a<\/li>\n<\/ul>\n\n\n\n<p>\u57fa\u672c\u7684\u306a\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u69cb\u9020\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ config\/app.php \u306e\u4f8b\nreturn [\n    'name' =&gt; env('APP_NAME', 'Laravel'),\n    'env' =&gt; env('APP_ENV', 'production'),\n    'debug' =&gt; env('APP_DEBUG', false),\n    \/\/ ... \u305d\u306e\u4ed6\u306e\u8a2d\u5b9a\n];<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-2\">env\u30d5\u30a1\u30a4\u30eb\u3068config\u30d5\u30a1\u30a4\u30eb\u306e\u9055\u3044\u3068\u4f7f\u3044\u5206\u3051<\/h3>\n\n\n\n<p><code>.env<\/code>\u30d5\u30a1\u30a4\u30eb\u3068config\u30d5\u30a1\u30a4\u30eb\u306b\u306f\u3001\u660e\u78ba\u306a\u5f79\u5272\u306e\u9055\u3044\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<p><code>.env<\/code>\u30d5\u30a1\u30a4\u30eb\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u74b0\u5883\u56fa\u6709\u306e\u8a2d\u5b9a\u5024\u3092\u7ba1\u7406<\/li>\n\n\n\n<li>\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u5bfe\u8c61\u5916<\/li>\n\n\n\n<li>\u6a5f\u5bc6\u60c5\u5831\uff08API\u30ad\u30fc\u306a\u3069\uff09\u306e\u4fdd\u7ba1<\/li>\n\n\n\n<li>\u7c21\u5358\u306a key-value \u5f62\u5f0f<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">APP_NAME=MyApp\nAPP_ENV=local\nDB_CONNECTION=mysql\nDB_HOST=127.0.0.1<\/pre>\n\n\n\n<p>config\u30d5\u30a1\u30a4\u30eb\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u57fa\u672c\u8a2d\u5b9a\u3092\u5b9a\u7fa9<\/li>\n\n\n\n<li>\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u5bfe\u8c61<\/li>\n\n\n\n<li>\u968e\u5c64\u69cb\u9020\u3092\u6301\u3064\u8907\u96d1\u306a\u8a2d\u5b9a\u304c\u53ef\u80fd<\/li>\n\n\n\n<li>\u74b0\u5883\u5909\u6570\u304b\u3089\u5024\u3092\u8aad\u307f\u8fbc\u3080<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-3\">\u8a2d\u5b9a\u5024\u306e\u53d6\u5f97\u65b9\u6cd5\u3068\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9<\/h3>\n\n\n\n<p>\u8a2d\u5b9a\u5024\u3078\u306e\u30a2\u30af\u30bb\u30b9\u65b9\u6cd5\u306f\u8907\u6570\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>config\u95a2\u6570\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9\n$appName = config('app.name');\n\n\/\/ \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u3092\u6307\u5b9a\u3059\u308b\u5834\u5408\n$timezone = config('app.timezone', 'UTC');\n\n\/\/ \u8a2d\u5b9a\u5024\u306e\u52d5\u7684\u306a\u5909\u66f4\nconfig(['app.debug' =&gt; true]);<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Config\u30d5\u30a1\u30b5\u30fc\u30c9\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">use Illuminate\\Support\\Facades\\Config;\n\n\/\/ \u8a2d\u5b9a\u5024\u306e\u53d6\u5f97\n$appName = Config::get('app.name');\n\n\/\/ \u8a2d\u5b9a\u5024\u306e\u5b58\u5728\u78ba\u8a8d\nif (Config::has('app.debug')) {\n    \/\/ \u51e6\u7406\n}<\/pre>\n\n\n\n<p>\u8a2d\u5b9a\u5024\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3067\u306f\u3001\u30c9\u30c3\u30c8\u8a18\u6cd5\u3092\u4f7f\u7528\u3057\u3066\u968e\u5c64\u69cb\u9020\u306e\u8a2d\u5b9a\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ database.php\u5185\u306eMySQL\u30db\u30b9\u30c8\u8a2d\u5b9a\u306b\u30a2\u30af\u30bb\u30b9\n$dbHost = config('database.connections.mysql.host');<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u57fa\u672c\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u3067\u3001Laravel\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a\u7ba1\u7406\u3092\u52b9\u7387\u7684\u306b\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3088\u308a\u5b9f\u8df5\u7684\u306a\u8a2d\u5b9a\u7ba1\u7406\u30c6\u30af\u30cb\u30c3\u30af\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-4\">\u5b9f\u8df5\u7684\u306a\u8a2d\u5b9a\u7ba1\u7406\u30c6\u30af\u30cb\u30c3\u30af<\/h2>\n\n\n\n<p>\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067Laravel\u306e\u8a2d\u5b9a\u3092\u52b9\u7387\u7684\u306b\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u5b9f\u8df5\u7684\u306a\u30c6\u30af\u30cb\u30c3\u30af\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-5\">\u30ab\u30b9\u30bf\u30e0\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210\u3068\u5229\u7528\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u56fa\u6709\u306e\u8a2d\u5b9a\u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u30ab\u30b9\u30bf\u30e0\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30ab\u30b9\u30bf\u30e0\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ config\/services.php\nreturn [\n    'payment' =&gt; [\n        'stripe' =&gt; [\n            'public_key' =&gt; env('STRIPE_PUBLIC_KEY'),\n            'secret_key' =&gt; env('STRIPE_SECRET_KEY'),\n            'webhook_secret' =&gt; env('STRIPE_WEBHOOK_SECRET'),\n        ],\n        'settings' =&gt; [\n            'auto_charge' =&gt; env('PAYMENT_AUTO_CHARGE', false),\n            'retry_count' =&gt; env('PAYMENT_RETRY_COUNT', 3),\n        ]\n    ]\n];<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30b5\u30fc\u30d3\u30b9\u30d7\u30ed\u30d0\u30a4\u30c0\u3067\u306e\u8a2d\u5b9a\u306e\u767b\u9332:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">namespace App\\Providers;\n\nuse Illuminate\\Support\\ServiceProvider;\n\nclass PaymentServiceProvider extends ServiceProvider\n{\n    public function register()\n    {\n        $this-&gt;mergeConfigFrom(\n            __DIR__.'\/..\/config\/payment.php', 'payment'\n        );\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-6\">\u74b0\u5883\u3054\u3068\u306e\u8a2d\u5b9a\u5024\u306e\u5207\u308a\u66ff\u3048\u65b9<\/h3>\n\n\n\n<p>\u7570\u306a\u308b\u74b0\u5883\uff08\u958b\u767a\u3001\u30c6\u30b9\u30c8\u3001\u672c\u756a\uff09\u3067\u306e\u8a2d\u5b9a\u5024\u306e\u7ba1\u7406\u65b9\u6cd5\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u74b0\u5883\u5225\u306e.env\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># .env.development\nAPP_ENV=development\nDEBUG=true\nDB_CONNECTION=mysql_dev\n\n# .env.testing\nAPP_ENV=testing\nDEBUG=true\nDB_CONNECTION=mysql_test\n\n# .env.production\nAPP_ENV=production\nDEBUG=false\nDB_CONNECTION=mysql_prod<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u74b0\u5883\u691c\u51fa\u3068\u5207\u308a\u66ff\u3048\u306e\u30b3\u30fc\u30c9\u5b9f\u88c5:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ app\/Providers\/AppServiceProvider.php\npublic function boot()\n{\n    $environment = app()-&gt;environment();\n\n    switch ($environment) {\n        case 'local':\n            config(['app.debug' =&gt; true]);\n            config(['logging.channels.stack.channels' =&gt; ['single', 'stderr']]);\n            break;\n        case 'testing':\n            config(['mail.driver' =&gt; 'array']);\n            break;\n        case 'production':\n            config(['app.debug' =&gt; false]);\n            config(['logging.channels.stack.channels' =&gt; ['daily', 'slack']]);\n            break;\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-7\">\u8a2d\u5b9a\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u306b\u3088\u308b\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316<\/h3>\n\n\n\n<p>\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u6d3b\u7528\u3057\u3066\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u8a2d\u5b9a\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u5316:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u8a2d\u5b9a\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\u3059\u308b\nphp artisan config:cache\n\n# \u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2\u3059\u308b\nphp artisan config:clear<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30ad\u30e3\u30c3\u30b7\u30e5\u5229\u7528\u6642\u306e\u6ce8\u610f\u70b9:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u274c \u30ad\u30e3\u30c3\u30b7\u30e5\u6642\u306b\u52d5\u4f5c\u3057\u306a\u3044\u4f8b\n$value = env('APP_DEBUG', false);\n\n\/\/ \u2705 \u6b63\u3057\u3044\u4f7f\u7528\u65b9\u6cd5\n$value = config('app.debug');<\/pre>\n\n\n\n<p>\u30ad\u30e3\u30c3\u30b7\u30e5\u4f7f\u7528\u6642\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u958b\u767a\u74b0\u5883\u3067\u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u7121\u52b9\u306b\u3059\u308b<\/li>\n\n\n\n<li>\u30c7\u30d7\u30ed\u30a4\u6642\u306b\u5fc5\u305a\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u518d\u751f\u6210\u3059\u308b<\/li>\n\n\n\n<li>\u8a2d\u5b9a\u5909\u66f4\u5f8c\u306f\u5fc5\u305a\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2\u3059\u308b<\/li>\n\n\n\n<li><code>env()<\/code> \u95a2\u6570\u306e\u76f4\u63a5\u4f7f\u7528\u3092\u907f\u3051\u3001<code>config()<\/code> \u3092\u4f7f\u7528\u3059\u308b<\/li>\n<\/ul>\n\n\n\n<p>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u305f\u3081\u306e\u30b3\u30de\u30f3\u30c9\u5b9f\u884c\u4f8b:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u4f8b\nphp artisan config:clear\nphp artisan config:cache\nphp artisan route:cache\nphp artisan view:cache<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u5b9f\u8df5\u7684\u306a\u30c6\u30af\u30cb\u30c3\u30af\u3092\u9069\u5207\u306b\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u52b9\u7387\u7684\u3067\u7ba1\u7406\u3057\u3084\u3059\u3044\u8a2d\u5b9a\u30b7\u30b9\u30c6\u30e0\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-8\">\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56<\/h2>\n\n\n\n<p>Laravel\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a\u7ba1\u7406\u306b\u304a\u3044\u3066\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306f\u6700\u3082\u91cd\u8981\u306a\u8981\u7d20\u306e\u4e00\u3064\u3067\u3059\u3002\u9069\u5207\u306a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u3001\u6a5f\u5bc6\u60c5\u5831\u306e\u6f0f\u6d29\u3092\u9632\u304e\u3001\u5b89\u5168\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u904b\u7528\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-9\">\u6a5f\u5bc6\u60c5\u5831\u306e\u5b89\u5168\u306a\u7ba1\u7406\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u6a5f\u5bc6\u60c5\u5831\u3092\u9069\u5207\u306b\u7ba1\u7406\u3059\u308b\u3053\u3068\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u78ba\u4fdd\u3059\u308b\u4e0a\u3067\u975e\u5e38\u306b\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u6697\u53f7\u5316\u30ad\u30fc\u306e\u7ba1\u7406:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ config\/app.php\n'key' =&gt; env('APP_KEY'),\n'cipher' =&gt; 'AES-256-CBC',\n\n\/\/ \u6697\u53f7\u5316\u3055\u308c\u305f\u8a2d\u5b9a\u5024\u306e\u4f7f\u7528\u4f8b\nuse Illuminate\\Support\\Facades\\Crypt;\n\n\/\/ \u6a5f\u5bc6\u30c7\u30fc\u30bf\u306e\u6697\u53f7\u5316\n$encryptedApiKey = Crypt::encryptString($apiKey);\n\n\/\/ \u5fa9\u53f7\u5316\n$decryptedApiKey = Crypt::decryptString($encryptedApiKey);<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u6a5f\u5bc6\u60c5\u5831\u306e\u4fdd\u5b58\u5834\u6240:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># .env\uff08\u63a8\u5968\uff09\nDB_PASSWORD=super_secret_password\nAPI_KEY=your_secret_api_key\n\n# config\/database.php\uff08\u975e\u63a8\u5968\uff09\n'password' =&gt; env('DB_PASSWORD'), \/\/ \u5024\u3092\u76f4\u63a5\u66f8\u304b\u306a\u3044<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30bb\u30ad\u30e5\u30a2\u306a\u8a2d\u5b9a\u5024\u306e\u53d6\u308a\u6271\u3044:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u95a2\u9023\u306e\u8a2d\u5b9a\u3092\u307e\u3068\u3081\u3066\u7ba1\u7406\u3059\u308b\u4f8b\n\/\/ config\/security.php\nreturn [\n    'api_keys' =&gt; [\n        'encryption' =&gt; [\n            'algorithm' =&gt; env('SECURITY_ENCRYPTION_ALGORITHM', 'AES-256-CBC'),\n            'key_rotation_days' =&gt; env('SECURITY_KEY_ROTATION_DAYS', 30),\n        ],\n        'rate_limiting' =&gt; [\n            'max_attempts' =&gt; env('SECURITY_MAX_ATTEMPTS', 60),\n            'decay_minutes' =&gt; env('SECURITY_DECAY_MINUTES', 1),\n        ],\n    ],\n];<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-10\">\u74b0\u5883\u5909\u6570\u3092\u4f7f\u7528\u3059\u308b\u969b\u306e\u6ce8\u610f\u70b9<\/h3>\n\n\n\n<p>\u74b0\u5883\u5909\u6570\u306e\u4f7f\u7528\u306b\u306f\u3001\u3044\u304f\u3064\u304b\u306e\u91cd\u8981\u306a\u6ce8\u610f\u70b9\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u74b0\u5883\u5909\u6570\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ app\/Providers\/AppServiceProvider.php\npublic function boot()\n{\n    $this-&gt;validateEnvironmentVariables();\n}\n\nprivate function validateEnvironmentVariables()\n{\n    $required = [\n        'APP_KEY',\n        'DB_CONNECTION',\n        'DB_HOST',\n        'DB_DATABASE',\n        'DB_USERNAME',\n        'DB_PASSWORD',\n    ];\n\n    $missing = array_filter($required, function ($var) {\n        return empty(env($var));\n    });\n\n    if (!empty($missing)) {\n        throw new \\Exception('\u5fc5\u8981\u306a\u74b0\u5883\u5909\u6570\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093: ' . implode(', ', $missing));\n    }\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30bb\u30ad\u30e5\u30a2\u306a\u74b0\u5883\u5909\u6570\u306e\u8aad\u307f\u8fbc\u307f:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u5b89\u5168\u306a\u74b0\u5883\u5909\u6570\u306e\u53d6\u5f97\u65b9\u6cd5\n$value = config('app.key');  \/\/ \u2713 \u63a8\u5968\n$value = env('APP_KEY');     \/\/ \u00d7 \u975e\u63a8\u5968\uff08\u30ad\u30e3\u30c3\u30b7\u30e5\u6642\u306b\u554f\u984c\u767a\u751f\uff09\n\n\/\/ \u6761\u4ef6\u4ed8\u304d\u306e\u8a2d\u5b9a\u5024\u53d6\u5f97\n$debug = config('app.debug') &amp;&amp; app()-&gt;environment('local');<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-11\">\u672c\u756a\u74b0\u5883\u3067\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h3>\n\n\n\n<p>\u672c\u756a\u74b0\u5883\u3067\u306e\u8a2d\u5b9a\u7ba1\u7406\u306b\u306f\u3001\u7279\u306b\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u6642\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30c1\u30a7\u30c3\u30af:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ deploy.php \u307e\u305f\u306f\u95a2\u9023\u30b9\u30af\u30ea\u30d7\u30c8\nif (app()-&gt;environment('production')) {\n    \/\/ APP_KEY\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\n    if (empty(config('app.key'))) {\n        throw new \\Exception('Production environment requires APP_KEY to be set');\n    }\n\n    \/\/ \u30c7\u30d0\u30c3\u30b0\u30e2\u30fc\u30c9\u304c\u7121\u52b9\u5316\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\n    if (config('app.debug')) {\n        throw new \\Exception('Debug mode must be disabled in production');\n    }\n\n    \/\/ \u91cd\u8981\u306a\u8a2d\u5b9a\u5024\u306e\u5b58\u5728\u78ba\u8a8d\n    $criticalConfigs = [\n        'mail.host',\n        'database.connections.mysql.host',\n        'queue.connections.redis.host',\n    ];\n\n    foreach ($criticalConfigs as $config) {\n        if (empty(config($config))) {\n            throw new \\Exception(\"Critical configuration missing: {$config}\");\n        }\n    }\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u95a2\u9023\u306e\u8a2d\u5b9a\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8:<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30ad\u30fc\u304c\u9069\u5207\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u304b<\/li>\n\n\n\n<li>\u30c7\u30d0\u30c3\u30b0\u30e2\u30fc\u30c9\u304c\u7121\u52b9\u5316\u3055\u308c\u3066\u3044\u308b\u304b<\/li>\n\n\n\n<li>\u30a8\u30e9\u30fc\u30ed\u30b0\u306e\u51fa\u529b\u30ec\u30d9\u30eb\u304c\u9069\u5207\u304b<\/li>\n\n\n\n<li>\u30bb\u30c3\u30b7\u30e7\u30f3\u8a2d\u5b9a\u304c\u5b89\u5168\u304b<\/li>\n\n\n\n<li>CORS\u8a2d\u5b9a\u304c\u9069\u5207\u304b<\/li>\n<\/ul>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u672c\u756a\u74b0\u5883\u5c02\u7528\u306e\u8a2d\u5b9a\u4f8b:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ config\/logging.php\n'production' =&gt; [\n    'driver' =&gt; 'daily',\n    'path' =&gt; storage_path('logs\/laravel.log'),\n    'level' =&gt; env('LOG_LEVEL', 'error'),\n    'days' =&gt; 30,\n    'permission' =&gt; 0644,\n],\n\n\/\/ config\/session.php\n'secure' =&gt; env('SESSION_SECURE_COOKIE', true),\n'http_only' =&gt; true,\n'same_site' =&gt; 'lax',<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56\u3092\u9069\u5207\u306b\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5b89\u5168\u6027\u3092\u5927\u5e45\u306b\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u30c7\u30d0\u30c3\u30b0\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-12\">\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u30c7\u30d0\u30c3\u30b0<\/h2>\n\n\n\n<p>Laravel\u306e\u8a2d\u5b9a\u306b\u95a2\u3059\u308b\u554f\u984c\u89e3\u6c7a\u3068\u30c7\u30d0\u30c3\u30b0\u624b\u6cd5\u306b\u3064\u3044\u3066\u3001\u5b9f\u8df5\u7684\u306a\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-13\">\u3088\u304f\u3042\u308b\u8a2d\u5b9a\u95a2\u9023\u306e\u30a8\u30e9\u30fc\u3068\u89e3\u6c7a\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u958b\u767a\u4e2d\u306b\u3088\u304f\u906d\u9047\u3059\u308b\u8a2d\u5b9a\u95a2\u9023\u306e\u30a8\u30e9\u30fc\u3068\u305d\u306e\u89e3\u6c7a\u65b9\u6cd5\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u300c.env file not found\u300d\u30a8\u30e9\u30fc:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u89e3\u6c7a\u65b9\u6cd5\ncp .env.example .env\nphp artisan key:generate<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u8a2d\u5b9a\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u554f\u984c:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u30af\u30ea\u30a2\u3068\u518d\u751f\u6210\nphp artisan config:clear\nphp artisan config:cache\n\n# \u5168\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u30af\u30ea\u30a2\nphp artisan optimize:clear<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u74b0\u5883\u5909\u6570\u304c\u8aad\u307f\u8fbc\u307e\u308c\u306a\u3044\u554f\u984c:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30c7\u30d0\u30c3\u30b0\u7528\u306e\u30d8\u30eb\u30d1\u30fc\u95a2\u6570\nif (!function_exists('debug_config')) {\n    function debug_config($key) {\n        return [\n            'env' =&gt; env($key),\n            'config' =&gt; config($key),\n            'cached' =&gt; app()-&gt;configurationIsCached(),\n            'environment' =&gt; app()-&gt;environment(),\n        ];\n    }\n}\n\n\/\/ \u4f7f\u7528\u4f8b\ndd(debug_config('app.name'));<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-14\">\u8a2d\u5b9a\u5024\u304c\u6b63\u3057\u304f\u8aad\u307f\u8fbc\u307e\u308c\u306a\u3044\u5834\u5408\u306e\u5bfe\u51e6\u6cd5<\/h3>\n\n\n\n<p>\u8a2d\u5b9a\u5024\u306e\u8aad\u307f\u8fbc\u307f\u306b\u95a2\u3059\u308b\u554f\u984c\u3092\u7279\u5b9a\u3057\u89e3\u6c7a\u3059\u308b\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u8a2d\u5b9a\u5024\u306e\u691c\u8a3c\u30d8\u30eb\u30d1\u30fc:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">namespace App\\Helpers;\n\nclass ConfigValidator\n{\n    public static function validateConfig($key, $expected = null)\n    {\n        $value = config($key);\n        $envValue = env(str_replace('.', '_', strtoupper($key)));\n\n        $result = [\n            'key' =&gt; $key,\n            'config_value' =&gt; $value,\n            'env_value' =&gt; $envValue,\n            'is_cached' =&gt; app()-&gt;configurationIsCached(),\n            'file_exists' =&gt; file_exists(base_path('.env')),\n        ];\n\n        if ($expected !== null) {\n            $result['matches_expected'] = $value === $expected;\n        }\n\n        return $result;\n    }\n}\n\n\/\/ \u4f7f\u7528\u4f8b\n$result = ConfigValidator::validateConfig('database.default', 'mysql');\ndd($result);<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u4e00\u822c\u7684\u306a\u554f\u984c\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ config\/custom.php\nreturn [\n    'debug' =&gt; [\n        'show_config_values' =&gt; env('APP_DEBUG', false),\n        'log_config_access' =&gt; env('LOG_CONFIG_ACCESS', false),\n    ],\n];\n\n\/\/ \u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3067\u306e\u8a2d\u5b9a\u5024\u30a2\u30af\u30bb\u30b9\u30ed\u30b0\nnamespace App\\Http\\Middleware;\n\nclass ConfigAccessLogger\n{\n    public function handle($request, Closure $next)\n    {\n        if (config('custom.debug.log_config_access')) {\n            \\Log::debug('Config access', [\n                'url' =&gt; $request-&gt;url(),\n                'accessed_configs' =&gt; $this-&gt;getAccessedConfigs(),\n            ]);\n        }\n\n        return $next($request);\n    }\n\n    private function getAccessedConfigs()\n    {\n        \/\/ \u4e3b\u8981\u306a\u8a2d\u5b9a\u5024\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u8a18\u9332\n        $configs = [\n            'app' =&gt; config('app'),\n            'database' =&gt; config('database.default'),\n            'cache' =&gt; config('cache.default'),\n        ];\n\n        return array_filter($configs);\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-15\">\u958b\u767a\u74b0\u5883\u3067\u306e\u30c7\u30d0\u30c3\u30b0\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<p>\u52b9\u7387\u7684\u306a\u30c7\u30d0\u30c3\u30b0\u3092\u884c\u3046\u305f\u3081\u306e\u5b9f\u8df5\u7684\u306a\u30c6\u30af\u30cb\u30c3\u30af\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30c7\u30d0\u30c3\u30b0\u7528\u306e\u30b5\u30fc\u30d3\u30b9\u30d7\u30ed\u30d0\u30a4\u30c0:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">namespace App\\Providers;\n\nuse Illuminate\\Support\\ServiceProvider;\n\nclass DebugServiceProvider extends ServiceProvider\n{\n    public function boot()\n    {\n        if (!$this-&gt;app-&gt;environment('production')) {\n            $this-&gt;registerDebugTools();\n        }\n    }\n\n    private function registerDebugTools()\n    {\n        \/\/ \u8a2d\u5b9a\u5024\u306e\u5909\u66f4\u3092\u76e3\u8996\n        config()-&gt;beforeSaving(function($key, $value) {\n            \\Log::debug(\"Config value changed\", [\n                'key' =&gt; $key,\n                'new_value' =&gt; $value,\n                'trace' =&gt; debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2),\n            ]);\n        });\n\n        \/\/ \u8a2d\u5b9a\u5024\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u76e3\u8996\n        $this-&gt;app-&gt;bind('config', function($app) {\n            return new class($app-&gt;make('config.repository')) {\n                private $config;\n\n                public function __construct($config)\n                {\n                    $this-&gt;config = $config;\n                }\n\n                public function get($key, $default = null)\n                {\n                    $value = $this-&gt;config-&gt;get($key, $default);\n                    \\Log::debug(\"Config accessed\", [\n                        'key' =&gt; $key,\n                        'value' =&gt; $value,\n                        'caller' =&gt; debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2)[1],\n                    ]);\n                    return $value;\n                }\n            };\n        });\n    }\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30c7\u30d0\u30c3\u30b0\u30b3\u30de\u30f3\u30c9\u306e\u4f5c\u6210:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">namespace App\\Console\\Commands;\n\nuse Illuminate\\Console\\Command;\n\nclass DebugConfig extends Command\n{\n    protected $signature = 'debug:config {key? : The config key to debug}';\n    protected $description = '\u8a2d\u5b9a\u5024\u306e\u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u3092\u8868\u793a';\n\n    public function handle()\n    {\n        $key = $this-&gt;argument('key');\n\n        if ($key) {\n            $this-&gt;debugSpecificKey($key);\n        } else {\n            $this-&gt;debugAllConfigs();\n        }\n    }\n\n    private function debugSpecificKey($key)\n    {\n        $this-&gt;info(\"Debugging config key: {$key}\");\n        $this-&gt;table(\n            ['Property', 'Value'],\n            [\n                ['Config Value', var_export(config($key), true)],\n                ['Env Value', var_export(env(str_replace('.', '_', strtoupper($key))), true)],\n                ['Is Cached', app()-&gt;configurationIsCached() ? 'Yes' : 'No'],\n                ['Environment', app()-&gt;environment()],\n            ]\n        );\n    }\n\n    private function debugAllConfigs()\n    {\n        $this-&gt;info('Debugging all config values...');\n        $configs = config()-&gt;all();\n\n        foreach ($configs as $key =&gt; $value) {\n            if (is_array($value)) {\n                $this-&gt;line(\"\\n[{$key}]\");\n                $this-&gt;table(\n                    ['Key', 'Value'],\n                    collect($value)-&gt;map(function ($v, $k) {\n                        return [$k, is_array($v) ? 'Array' : var_export($v, true)];\n                    })-&gt;toArray()\n                );\n            }\n        }\n    }\n}<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30c7\u30d0\u30c3\u30b0\u30c4\u30fc\u30eb\u3068\u30c6\u30af\u30cb\u30c3\u30af\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u8a2d\u5b9a\u95a2\u9023\u306e\u554f\u984c\u3092\u52b9\u7387\u7684\u306b\u7279\u5b9a\u3057\u89e3\u6c7a\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u8a2d\u5b9a\u7ba1\u7406\u306e\u73fe\u5834\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-16\">\u8a2d\u5b9a\u7ba1\u7406\u306e\u73fe\u5834\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h2>\n\n\n\n<p>\u5b9f\u969b\u306e\u958b\u767a\u73fe\u5834\u3067\u306e\u52b9\u7387\u7684\u306a\u8a2d\u5b9a\u7ba1\u7406\u65b9\u6cd5\u3068\u3001\u30c1\u30fc\u30e0\u3067\u306e\u5354\u696d\u306b\u304a\u3051\u308b\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-17\">\u5927\u898f\u6a21\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u8a2d\u5b9a\u7ba1\u7406\u8853<\/h3>\n\n\n\n<p>\u5927\u898f\u6a21\u306aLaravel\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u52b9\u679c\u7684\u306a\u8a2d\u5b9a\u7ba1\u7406\u65b9\u6cd5\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30e2\u30b8\u30e5\u30fc\u30eb\u5316\u3055\u308c\u305f\u8a2d\u5b9a\u7ba1\u7406:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ config\/modules\/payment.php\nreturn [\n    'providers' =&gt; [\n        'stripe' =&gt; [\n            'config' =&gt; env('STRIPE_CONFIG'),\n            'mode' =&gt; env('STRIPE_MODE', 'sandbox'),\n        ],\n        'paypal' =&gt; [\n            'config' =&gt; env('PAYPAL_CONFIG'),\n            'mode' =&gt; env('PAYPAL_MODE', 'sandbox'),\n        ],\n    ],\n];\n\n\/\/ config\/modules\/notification.php\nreturn [\n    'channels' =&gt; [\n        'slack' =&gt; [\n            'webhook_url' =&gt; env('SLACK_WEBHOOK_URL'),\n            'channel' =&gt; env('SLACK_CHANNEL', '#general'),\n        ],\n        'email' =&gt; [\n            'from_address' =&gt; env('MAIL_FROM_ADDRESS'),\n            'from_name' =&gt; env('MAIL_FROM_NAME'),\n        ],\n    ],\n];\n\n\/\/ \u8a2d\u5b9a\u306e\u30ed\u30fc\u30c9\nnamespace App\\Providers;\n\nclass ModuleServiceProvider extends ServiceProvider\n{\n    protected $modules = ['payment', 'notification'];\n\n    public function register()\n    {\n        foreach ($this-&gt;modules as $module) {\n            $this-&gt;mergeConfigFrom(\n                __DIR__.\"\/..\/..\/config\/modules\/{$module}.php\",\n                \"modules.{$module}\"\n            );\n        }\n    }\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u8a2d\u5b9a\u5024\u306e\u691c\u8a3c\u30b7\u30b9\u30c6\u30e0:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">namespace App\\Services\\Config;\n\nclass ConfigurationValidator\n{\n    private $rules = [\n        'modules.payment.providers.stripe.config' =&gt; 'required|string',\n        'modules.notification.channels.slack.webhook_url' =&gt; 'required|url',\n        'app.timezone' =&gt; 'required|timezone',\n    ];\n\n    public function validate()\n    {\n        $validator = validator(config()-&gt;all(), $this-&gt;rules);\n\n        if ($validator-&gt;fails()) {\n            throw new \\Exception(\n                \"Configuration validation failed:\\n\" .\n                collect($validator-&gt;errors()-&gt;all())-&gt;implode(\"\\n\")\n            );\n        }\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-18\">\u30c1\u30fc\u30e0\u958b\u767a\u306b\u304a\u3051\u308b\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u5171\u6709\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u30c1\u30fc\u30e0\u3067\u306e\u52b9\u7387\u7684\u306a\u8a2d\u5b9a\u7ba1\u7406\u3068\u5171\u6709\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u74b0\u5883\u8a2d\u5b9a\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u7ba1\u7406:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ scripts\/setup-env.php\n&lt;?php\n\nclass EnvironmentSetup\n{\n    private $envExample = '.env.example';\n    private $envFile = '.env';\n    private $requiredVariables = [\n        'APP_NAME' =&gt; 'string',\n        'APP_ENV' =&gt; 'enum:local,development,staging,production',\n        'DB_CONNECTION' =&gt; 'enum:mysql,pgsql,sqlite',\n        'CACHE_DRIVER' =&gt; 'enum:file,redis,memcached',\n    ];\n\n    public function setup()\n    {\n        $this-&gt;copyEnvFile()\n             -&gt;validateRequiredVariables()\n             -&gt;generateAppKey();\n    }\n\n    private function copyEnvFile()\n    {\n        if (!file_exists($this-&gt;envFile)) {\n            copy($this-&gt;envExample, $this-&gt;envFile);\n            echo \"Created .env file from .env.example\\n\";\n        }\n        return $this;\n    }\n\n    private function validateRequiredVariables()\n    {\n        foreach ($this-&gt;requiredVariables as $variable =&gt; $type) {\n            $this-&gt;validateVariable($variable, $type);\n        }\n        return $this;\n    }\n\n    private function validateVariable($variable, $type)\n    {\n        $value = env($variable);\n        if ($value === null) {\n            throw new \\Exception(\"Missing required environment variable: {$variable}\");\n        }\n\n        if (strpos($type, 'enum:') === 0) {\n            $allowedValues = explode(',', substr($type, 5));\n            if (!in_array($value, $allowedValues)) {\n                throw new \\Exception(\n                    \"{$variable} must be one of: \" . implode(', ', $allowedValues)\n                );\n            }\n        }\n    }\n\n    private function generateAppKey()\n    {\n        if (empty(env('APP_KEY'))) {\n            exec('php artisan key:generate');\n            echo \"Generated new APP_KEY\\n\";\n        }\n        return $this;\n    }\n}\n\n\/\/ Usage in composer scripts\n\/\/ composer.json\n{\n    \"scripts\": {\n        \"post-create-project-cmd\": [\n            \"@php scripts\/setup-env.php\"\n        ]\n    }\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30c1\u30fc\u30e0\u5171\u6709\u306e\u305f\u3081\u306e\u8a2d\u5b9a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u751f\u6210:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">namespace App\\Console\\Commands;\n\nuse Illuminate\\Console\\Command;\n\nclass GenerateConfigDocs extends Command\n{\n    protected $signature = 'config:docs';\n    protected $description = '\u8a2d\u5b9a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u751f\u6210';\n\n    public function handle()\n    {\n        $configs = config()-&gt;all();\n        $markdown = \"# \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u8a2d\u5b9a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\\n\\n\";\n\n        foreach ($configs as $key =&gt; $value) {\n            $markdown .= $this-&gt;documentConfig($key, $value);\n        }\n\n        file_put_contents(\n            base_path('docs\/configuration.md'),\n            $markdown\n        );\n\n        $this-&gt;info('\u8a2d\u5b9a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u751f\u6210\u3057\u307e\u3057\u305f: docs\/configuration.md');\n    }\n\n    private function documentConfig($key, $value, $prefix = '')\n    {\n        $doc = '';\n\n        if (is_array($value)) {\n            $doc .= \"## {$prefix}{$key}\\n\\n\";\n            foreach ($value as $subKey =&gt; $subValue) {\n                $doc .= $this-&gt;documentConfig(\n                    $subKey,\n                    $subValue,\n                    \"{$prefix}{$key}.\"\n                );\n            }\n        } else {\n            $doc .= \"- `{$prefix}{$key}`: \";\n            $doc .= is_bool($value) ? ($value ? 'true' : 'false') : $value;\n            $doc .= \"\\n\";\n        }\n\n        return $doc;\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-19\">CI\u30c4\u30fc\u30eb\u3068\u306e\u9023\u643a\u306b\u3088\u308b\u81ea\u52d5\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<p>CI\/CD\u74b0\u5883\u3067\u306e\u8a2d\u5b9a\u7ba1\u7406\u306e\u81ea\u52d5\u5316\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>GitHub Actions\u3067\u306e\u8a2d\u5b9a\u30c6\u30b9\u30c8:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># .github\/workflows\/config-test.yml\nname: Test Configuration\n\non:\n  push:\n    paths:\n      - 'config\/**'\n      - '.env.example'\n      - '.github\/workflows\/config-test.yml'\n\njobs:\n  test-config:\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions\/checkout@v2\n\n      - name: Setup PHP\n        uses: shivammathur\/setup-php@v2\n        with:\n          php-version: '8.1'\n\n      - name: Copy .env\n        run: php -r \"file_exists('.env') || copy('.env.example', '.env');\"\n\n      - name: Install Dependencies\n        run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist\n\n      - name: Generate key\n        run: php artisan key:generate\n\n      - name: Validate Config\n        run: php artisan config:validate\n\n      - name: Test Config Cache\n        run: |\n          php artisan config:cache\n          php artisan config:clear<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u81ea\u52d5\u30c7\u30d7\u30ed\u30a4\u6642\u306e\u8a2d\u5b9a\u7ba1\u7406:<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ app\/Console\/Commands\/DeployConfig.php\nnamespace App\\Console\\Commands;\n\nuse Illuminate\\Console\\Command;\n\nclass DeployConfig extends Command\n{\n    protected $signature = 'deploy:config {environment}';\n    protected $description = '\u30c7\u30d7\u30ed\u30a4\u6642\u306e\u8a2d\u5b9a\u7ba1\u7406\u3092\u5b9f\u884c';\n\n    public function handle()\n    {\n        $environment = $this-&gt;argument('environment');\n\n        \/\/ \u74b0\u5883\u306b\u5fdc\u3058\u305f\u8a2d\u5b9a\u306e\u691c\u8a3c\n        $this-&gt;validateEnvironmentConfig($environment);\n\n        \/\/ \u8a2d\u5b9a\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\n        $this-&gt;call('config:cache');\n\n        \/\/ \u5fc5\u8981\u306b\u5fdc\u3058\u3066\u4ed6\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u3082\u66f4\u65b0\n        $this-&gt;call('route:cache');\n        $this-&gt;call('view:cache');\n\n        $this-&gt;info('\u8a2d\u5b9a\u306e\u30c7\u30d7\u30ed\u30a4\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002');\n    }\n\n    private function validateEnvironmentConfig($environment)\n    {\n        $requiredConfigs = [\n            'production' =&gt; [\n                'APP_DEBUG' =&gt; false,\n                'APP_ENV' =&gt; 'production',\n                'LOG_CHANNEL' =&gt; 'stack',\n            ],\n            'staging' =&gt; [\n                'APP_DEBUG' =&gt; true,\n                'APP_ENV' =&gt; 'staging',\n                'LOG_CHANNEL' =&gt; 'daily',\n            ],\n        ];\n\n        if (isset($requiredConfigs[$environment])) {\n            foreach ($requiredConfigs[$environment] as $key =&gt; $expectedValue) {\n                $actualValue = config('app.' . strtolower(substr($key, 4)));\n                if ($actualValue !== $expectedValue) {\n                    throw new \\Exception(\n                        \"Invalid configuration for {$environment}: \" .\n                        \"{$key} should be {$expectedValue}, got {$actualValue}\"\n                    );\n                }\n            }\n        }\n    }\n}<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u9069\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30c1\u30fc\u30e0\u958b\u767a\u306b\u304a\u3051\u308b\u8a2d\u5b9a\u7ba1\u7406\u306e\u52b9\u7387\u3068\u54c1\u8cea\u3092\u5927\u304d\u304f\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u7279\u306b\u5927\u898f\u6a21\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u81ea\u52d5\u5316\u3068\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u5316\u304c\u91cd\u8981\u306a\u5f79\u5272\u3092\u679c\u305f\u3057\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Warning: Undefined array key &#8220;is_admin&#8221; in \/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/ &#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":{"0":"post-2533","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-php","7":"nothumb"},"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/2533","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2533"}],"version-history":[{"count":2,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/2533\/revisions"}],"predecessor-version":[{"id":2535,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/2533\/revisions\/2535"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2533"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2533"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}