2017-04-03 8 views
0

私はCakePHP 2アプリをコンテナの中で実行しようとしています。私はすべてのセットアップがあり、PHPは正常に動作しますが、1つの問題があります。/ var/www/app/tmpに不正な書き込み権限があります。このディレクトリはボリュームからロードされていますボリュームのdirのchmodを変更してください。

答えて

0

あなたはすでにCakePHP2.0ドキュメントを見ましたか?おそらく便利です:

よくある問題は、app/tmpディレクトリとサブディレクトリがWebサーバーとコマンドラインユーザーの両方によって書き込み可能でなければならないことです。

HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1` 
setfacl -R -m u:${HTTPDUSER}:rwx app/tmp 
setfacl -R -d -m u:${HTTPDUSER}:rwx app/tmp 

出典:https://book.cakephp.org/2.0/en/installation.html#permissions

UNIXシステムでは、Webサーバーのユーザーが、コマンドラインユーザーと異なる場合は、アクセス権が適切に設定されることを保証するために、プロジェクト内に一度だけ、次のコマンドを実行することができます
+0

コンテナの意味では、コマンドラインユーザーはいません。コンテナにはルートのみが存在します。これは実際のオーバーレイプロセスと関係しています。 – Dockstar

0

これは、コンテナのパススルーを介してPHPを実行している場合には、これが多く発生します。このシナリオでは、事前定義された権限を持つディレクトリにアプリケーションを渡しています。あなたがしなければならないことは、定期的にコンテナからウェブサーバへのアクセス権が更新されていることを確認することです。さんがあなたのコンテナがウェブ

ドッキングウィンドウのexecウェブのchown -R WWW-データ/ var/www/htmlと設定

(/ var/www/htmlと設定コードが存在するどこに置き換えられる)

のために呼ばれているとしましょう例。これにより、コンテナ内で完璧に動作するようになりますが、Linuxを使用している場合は、実際にホストOSからのデータにアクセスする際に問題が発生する可能性があります。ボリュームのファイル自体がホストOSにはないユーザーIDに更新されているため、LaravelとPHPでホストからのボリュームパススルーを使用してこの問題を何度か繰り返しました。

関連する問題