PHPのexec()関数がシステムコマンドの実行に失敗する問題の解決策

不言
リリース: 2023-04-05 08:54:01
転載
8233 人が閲覧しました

この記事は、PHP の exec() 関数がシステム コマンドの実行に失敗する問題の解決策を提供します。これには特定の参考値があります。必要な友人はそれを参照できます。私はそれを願っています。助けてください、あなたは助けました。

0. 説明

php では、exec() を使用してシステム コマンドを実行できますが、時々 exec() コマンドの実行が失敗することがあります。リターンはありませんので、以下で説明してください:

1. 関数

exec ( string $command [, array &$output [, int &$return_var ]] ) : string
参数说明:
1.$command   要执行的命令
2.$output  执行结果
3.$return_var 若同时设置 $output 和此变量,命令执行后的返回状态会被写入到此变量
ログイン後にコピー

2. 例

exec("ping www.baidu.com", $output);
ログイン後にコピー

通常 一般的に言えば実行結果はサーバー上で直接 ping を実行した場合と同じになりますが、何らかの理由により予期せぬ事態が発生する場合があります。以下に 2 つの状況とその解決策について説明します。

2.1 権限問題

質問

Linux システム コマンドをサーバー上で直接実行する場合 (ここでは ping を例にします)、実行権限はログイン ユーザーの権限に依存します。ログインユーザーが root の場合、ping を実行するときは root として実行されます。しかし、Webサイトにアクセスすると、この時のユーザーはwwwとなっており、pingの実行権限を変更しないと正常に実行されません。

解決策

pingまたは対応するコマンドの実行権限を変更する

2.2 コマンドパスの問題

問題

別の状況があります。exec を使用してコマンドを実行すると、エラーは報告されず、結果も返されません。その理由は、このコマンドが環境変数が設定されているディレクトリにないためです。たとえば、「whereis
ifconfig」を使用して、このコマンドの特定のパスを確認できます。たとえば、パスは /usr/sbin の下にあります。解決策は 2 つあります。 :

解決策

1 コマンドを /usr/bin にコピーします (推奨されません)
2 コマンドのフル パスを直接入力します exec('/usr /sbin',$output); (推奨)

以上がPHPのexec()関数がシステムコマンドの実行に失敗する問題の解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!