ホームページ > バックエンド開発 > PHPチュートリアル > Web ページとコマンドラインで php システム コマンドを実行した結果が一致しない

Web ページとコマンドラインで php システム コマンドを実行した結果が一致しない

WBOY
リリース: 2016-06-13 13:20:51
オリジナル
1184 人が閲覧しました

php システム コマンドの実行結果が Web ページとコマンド ラインで一致しない
皆さん、こんにちは。ファイル a.php の内容は次のとおりです。

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
<?
$str = " /opt/rpm/bin/rpm -bb --target i686--linux /tmp/test.spec";
system($str);

?>

ログイン後にコピー

http://192.168.1.1/a.php を使用して実行すると、結果は次のようになります。

HTML コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->Building target platforms: i686--linux Building for target i686--linux Processing files: VTCUAL06.06C.P010-R1.0-P1 
ログイン後にコピー

コマンドラインで /usr/ を使用してください。 local/php a.php が実行されると、結果は次のようになります:

HTML コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
Building target platforms: i686--linux
Building for target i686--linux
Processing files: VTCUAL06.06C.P010-R1.0-P1
Finding  Provides: (using /opt/rpm/lib/rpm/find-provides)...
Finding  Requires: (using /opt/rpm/lib/rpm/find-requires)...
Wrote: /export/home/webadm/.rpm/RPMS/i686/VTCUA

ログイン後にコピー

つまり、3 つあります。 http アクセス モードで表示されない行:

HTML コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
Finding  Provides: (using /opt/rpm/lib/rpm/find-provides)...
Finding  Requires: (using /opt/rpm/lib/rpm/find-requires)...
Wrote: /export/home/webadm/.rpm/RPMS/i686/VTCUA

ログイン後にコピー

理由を知っている人はいますか?ありがとう! !


-----解決策--------------------------------この問題はとても奇妙です~~~ ~

誰か知っていますか?

------解決策---------それはまったく驚くべきことではありません。実行ユーザーはただの違う。コマンドラインはrootによって実行され、WebページはApacheユーザーによって実行されます。
Googleで検索すると、Apacheは--enable-suexecでコンパイルできると書いてありましたが、試していません。

------解決策---------
話し合う
それは驚くべきことではありません、実行ユーザーが異なるだけです。コマンドラインはrootによって実行され、WebページはApacheユーザーによって実行されます。
Googleで検索すると、Apacheは--enable-suexecでコンパイルできると書いてありましたが、試していません。


------解決策---------
話し合う
これは以前から常に可能でした。突然動作しなくなりました。したがって、ユーザーには何の関係もないはずです。


------解決策---------これは不可能です。

------解決策---------php コマンドラインプログラムの結果を使用して実行してみてください。

-----解決策---------ああ、気づきませんでした
これこれは明らかに権限の問題です
Web モードの PHP は、最も低い権限を持つ匿名ユーザーにすぎません

とはいえ、すべてがブラウザ経由で制御できる場合、システムにはセキュリティはありません

Microsoft は便利なデータ クエリを提供するために mssql2000 に URL クエリ機能を追加したと思います
その結果、他人に悪用され悪名高い SQL 攻撃になりました


------解決策----------------------私はそれが権限の問題だと言いましたが、あなたはそれを追加しましたsudoを使用しましたか? 結果はどうなりましたか?

------解決策------------------そこにあるはずですが、ない場合はダウンロードしてくださいwget oneでインストールしてください。

------解決策------------------ 後で出力がない場合は、何か問題があった可能性があると考えられますので、コードを試して結果を教えてください。

function my_exec($cmd, $input='')
{$proc=proc_open($cmd, array(0=>array('pipe', 'r'), 1=> ;array('pipe', 'w'), 2=>array('pipe', 'w')), $pipes);
fwrite($pipes[0], $input);fclose($パイプ[0]);
$stdout=stream_get_contents($pipes[1]);fclose($pipes[1]);
$stderr=stream_get_contents($pipes[2]);fclose($pipes[ 2]);
$rtn=proc_close($proc);
return array('stdout'=>$stdout,
'stderr'=>$stderr,
'return'= >$rtn
);
}
$str = " /opt/rpm/bin/rpm -bb --target i686--linux /tmp/test.spec";
var_export( my_exec($str));

------解決策----------------------
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート