1

ここでSlackwareからCentOSに移行しましたが、正常に動作していましたが、通知なしにphpが「wc」や「spamc」などの外部呼び出しの実行を停止しました。このような呼び出しはすべて、error_logに次のように表示されます。

sh:/ usr / bin / spamc:許可が拒否されました

パスは正しいです。権限が正しく設定されており、apacheは問題なくファイルを実行できるはずです。セーフモードではなく、base_dirが設定されていませんSELinuxではないか、少なくともsestatusはSELinuxが無効になっていると言っています。

まとめ:

  • PHPはexec()またはpopen()を介して何も実行できません
  • バイナリへのパスは正しいです。
  • セーフモードではありません
  • base_dirが設定されていません
  • バイナリの権限により、apacheユーザーはバイナリを実行できます
  • SELinuxが無効になっている
  • php.iniのdisable_functionsが空です
  • なぜそれが機能しないのか分かりません

PHPバージョン5.3.3およびCentOS5.5

誰かが何が起こっているのかについての手がかりを持っていますか?前もって感謝します

4

4 に答える 4

3

SELinuxはそれらを実行する試みをブロックしています。必要な外部コマンドのサブセットを実行し、それをモジュールとしてロードできるようにするルールを考え出すことをお勧めします。

于 2010-12-01T17:17:44.243 に答える
1

エラーが見つかりました。

たとえば、/ usr / bin / tidyを実行しようとしましたが、usrフォルダーには644のアクセス許可があり、これは私の本のコズミックホラーに似ています。私は根っこだったので働くことができました。

ルート/フォルダーから整頓されたバイナリへのコマンドのすべてのパスコンポーネントのアクセス許可を確認することに決めた後、私はそれを理解しました。すべてのアクセス許可が正しく設定されていることがわかりましたが、usrフォルダーの権限は完全にねじ込まれていました。

これは修正されました。

于 2010-12-01T20:30:57.557 に答える
0

PHPはサーバー上でApacheとして実行されますか?誰もいないと思った。

于 2010-12-01T17:19:26.093 に答える
0

https://serverfault.com/questions/207989/php-cant-execute-any-external-command/208001#208001

一般に、centOS上のPHPは、phpをfastcgi、dsoなどとしてコンパイルしていない限り、誰も実行しません。

于 2010-12-01T18:20:32.813 に答える