0

Ubuntu サーバーで cron として実行される PHP スクリプトがあります。

次のようなPHPスクリプトからbashスクリプトを実行しようとしています:

    exec(escapeshellarg('/bin/bash ') . escapeshellarg("/home/monu/myBash.sh") . escapeshellarg("var1") . escapeshellarg("var2") .escapeshellarg("var3"));

端末でユーザー (monu) として" " を実行するとphp myPHP.php、次のようなエラーが発生します。

    sh: 1: /bin/bash /home/monu/myBash.sh var1 var2 var3: not found

myBash.shの内容は次のようになります。

    export CLASSPATH=./:./lib/xp.jar:./lib/ojdbc14.jar:./lib/log4j-1.2.8.jar:./lib/log4j.properties:./lib/log4j.xml

    cd someDir
    ./install.sh $A $B $C $D
    cd ..

コマンドラインから BASH スクリプトを手動で実行すると、期待どおりに動作します。

私も試してみましsystem()shell_exec()が、まだ運がありません。

この BASH スクリプトを PHP スクリプトから呼び出して機能させるにはどうすればよいですか?ヒントはありますか?

4

1 に答える 1

1

escapeshellarg()コマンド全体ではなく、各引数で使用する必要があります。

exec(escapeshellarg('/bin/bash') . ' ' . escapeshellarg("/home/monu/myBash.sh") . ' ' . escapeshellarg(...));
于 2013-06-16T21:01:48.703 に答える