PHP Fedora 10からシステムコマンドとシェルスクリプトを呼び出せない

StackOverflow https://stackoverflow.com/questions/637430

質問

私は、PHPとApacheを介してFedora 10マシンでローカルに実行するアプリケーションに取り組んでいます。バックグラウンドで実行されるプロセスに依存します。

上層部は、ブラウザを介してプロセスを開始/停止/再起動できるようにしたいと考えています。 PHPでexec()とshell_execを使用してシステムを呼び出すことで、これを機能させようとしましたが、機能していないようです。

" exec( 'processName')"を使用してプロセスを開始しようとしても、何も起こりません。

" exec( 'killall processName')"を使用しようとすると、SELinuxはプロセスが許可されたという警告を常にポップアップし始めます(許可モードにしたため)が、実際にはプロセスを強制終了しません!しかし、これはページが完全に読み込まれた後でも続くようです!?!?

同様の方法で別のスクリプトを呼び出すことができます:" exec( '/ var / www / cgi-bin / ControlProgram START')"。そのため、2つの呼び出し/コマンドの主な違いは本当にわかりません。

また、スクリプト呼び出しを/etc/rc.localファイルに入れて、ログイン時にスクリプトを実行します。ただし、システムで実行されているため、このスクリプトをPHPから強制終了できますか?

パーミッション/ SELinuxに関しては私は第一人者ではないので、面倒な詳細をonしまないでください!事前に感謝します!

役に立ちましたか?

解決 2

問題が見つかったと思います。私はまだ問題が何であるか正確にはわかりませんが、ファイル/ディレクトリのパーミッションに関係があるようです。スクリプトを/ var / www / htmlディレクトリに移動すると、スクリプトが実行されました。それらを/ var / www / cgi-binに移動し、そこでも動作します。したがって、Apacheが/ var / wwwディレクトリの外部にあるスクリプトを実行できないか、少なくとも直接実行できない場合があります。あなたの助けをありがとう!

他のヒント

このシステムを管理する場合は、PHP構成を確認します(Webサーバーの構成プロファイルであることを確認します)。

Safe_Modeは、PHPが特定のフォルダー外で実行することを防ぎます。共有ホスティング環境では、これは通常、home / wwwフォルダーに関連するもののみを実行できることを意味します。これは、メモに基づいているようです。

古い学校のUnixパーミッションとApacheの動作方法のように思えます。私は思い出します(しばらく前ですが)、Apacheは実行する内容に注意を払っています。オクタルを再確認してください。

SELinuxではないことを確認するには、permissiveにする代わりに無効にすることができます。ただし、これによりファイルシステムのラベルが付け直されます(またはそうする必要があります)。その時点で、SELinuxコンテキストの拡張属性が正常に機能しなくなり、再度強制するとSELinuxの問題が発生する可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top