PHPは外部コマンドを実行できませんか?
-
29-09-2019 - |
質問
ここでSlackwareからCentosに移動しましたが、予告なしに正常に動作していました。PHPは、「WC」や「SPAMC」への通話などの外部通話の実行を停止しました。そのような呼び出しはすべて、次のようにERROR_LOGに表示されます。
sh:/usr/bin/spamc:許可が拒否されました
パスは正しいです。権限が正しく設定されており、Apacheは問題なくファイルを実行できると想定されています。そうだった いいえ safe_modeでは、base_dirセットがありません。 SELINUXではなく、少なくともSestatusはSelinuxが無効になっていると言います。
まとめ:
- phpはexec()またはpopen()を通じて何も実行できません
- バイナリへのパスは正しいです。
- セーフモードではありません
- base_dirセットはありません
- バイナリの許可により、Apacheユーザーはそれらを実行できます
- Selinuxは無効です
- php.iniのdisable_functionsは空です
- なぜそれがうまくいかないのかわからない
PHPバージョン5.3.3およびCENTOS 5.5
誰もが何が起こっているのかという手がかりを持っていますか?前もって感謝します
解決 2
エラーが見つかりました。
たとえば、USR/Bin/Tidyを実行しようとしていましたが、USRフォルダーには644の許可があり、私の本ではLovecraftianの恐怖に似ています。私はルートだったので働くことができました。
クレイジーになって、コマンドのすべてのパスコンポーネントのルート /フォルダーから整頓されたバイナリまでのアクセス許可を確認することを決定した後、私はそれを理解しました。
これは修正されています。
他のヒント
Selinuxはそれらを実行しようとする試みをブロックしています。必要な外部コマンドのサブセットを実行し、モジュールとしてロードできるルールを作成することをお勧めします。
PHPはサーバーでApacheとして実行されますか?私はそれが誰も走っていないと思った。
https://serverfault.com/questions/207989/php-cant-execute-any-external-command/208001###208001
一般的に、CentosのPHPは、PHPをFastCGI、DSOなどとしてコンパイルしていない限り、誰も実行されません...