CakePHP (v2) Shell を使用して、オンライン アプリケーションの背後でプロセスを実行しています。このシェルはプラグインの一部であるため、次の場所に保存されます。
app/Plugins/MyPlugin/Console/Command/MyScriptShell.php
2 つの異なる開発サーバーを使用しましたが、このシェルの実行はすべてうまくいきました。
残念ながら、実稼働環境では実行に失敗します。
Unix 端末で、以下のコマンドを手動で実行しようとすると失敗します。
# app/Console/cake MyPlugin.MyScript helloworldfunction [params1, paramsN] -app app
PHP Fatal error: Class 'Controller' not found in /var/www/app/Controller/AppController.php on line 6
反対側では、同じコマンドラインを"sudo -u {a-unix-user} {command}"で実行すると、実行が機能します! 動作する2つの例を次に示します。
# sudo -u www-data app/Console/cake MyPlugin.MyScript helloworldfunction [params1, paramsN] -app app
# sudo -u root app/Console/cake MyPlugin.MyScript helloworldfunction [params1, paramsN] -app app
わかりました、この動作に気づいて、UNIX の権利の問題か、このようなことを考えました。新しいテストとして、ターミナルで www-data の UNIX セッションを許可して、同じコマンドを実行することにしましたが、「sudo -u {a-unix-user} {command}」ディレクティブは使用しません。残念ながら、これも失敗します:
# sudo su www-data
www-data# whoami
www-data
www-data# app/Console/cake MyPlugin.MyScript helloworldfunction [params1, paramsN] -app app
PHP Fatal error: Class 'Controller' not found in /var/www/app/Controller/AppController.php on line 6
www-data#
ここに私が現在発生している問題の要約があります... この奇妙な動作を解決する方法はありますか?
ありがとう。