LaravelとNginxのパーミッション設定に関する問題と解決方法


  1. ストレージとキャッシュのパーミッションの設定: Laravelアプリケーションでは、ストレージやキャッシュディレクトリに書き込み権限が必要です。まず、Nginxユーザーがこれらのディレクトリにアクセスできるようにする必要があります。以下は、パーミッションの設定例です。

    # ストレージディレクトリのパーミッション設定
    sudo chgrp -R www-data storage
    sudo chmod -R 775 storage
    sudo chmod -R ug+s storage
    # キャッシュディレクトリのパーミッション設定
    sudo chgrp -R www-data bootstrap/cache
    sudo chmod -R 775 bootstrap/cache
    sudo chmod -R ug+s bootstrap/cache
  2. Nginxの設定: Nginxの設定ファイルであるnginx.confまたはサイトの設定ファイルであるsite.confにアクセス権限を設定する必要があります。以下は、Nginxの設定例です。

    server {
       listen 80;
       server_name example.com;
       root /path/to/laravel/public;
       location / {
           index index.php;
           try_files $uri $uri/ /index.php?$query_string;
       }
       # Laravelへのリクエストを処理する設定
       location ~ \.php$ {
           fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
           fastcgi_index index.php;
           fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
           include fastcgi_params;
       }
    }
  3. キャッシュのクリア: パーミッションの設定を変更した後は、Laravelのキャッシュをクリアする必要があります。ターミナルで以下のコマンドを実行します。

    php artisan cache:clear
    php artisan config:clear
    php artisan route:clear
    php artisan view:clear