2

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#

ここに私が現在発生している問題の要約があります... この奇妙な動作を解決する方法はありますか?

ありがとう。

4

1 に答える 1