5

PHP で bash スクリプトを実行しようとしていますが、実行できません。php -v

PHP 5.3.10-1ubuntu3.2 with Suhosin-Patch (cli) (built: Jun 13 2012 17:19:58)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

Ubuntu 12.04 LTS 64 ビット。

私のphpコード:

    $cmd='/www/var/pl/bash.sh';
    $retval =-1;
    exec( $cmd, $output ); //executing the exec function.
    foreach( $output as $tmp ) 
    { 
        echo "$tmp <br>"; 
    };

bash.sh:

 #!/bin/bash
swipl --quiet -s /var/www/pl/ples.pl -g "f(R, gel), writeln(R),open('/var/www/pl/in.txt',write, Stream),
write(Stream, (R)),
nl(Stream),
close(Stream)" -t halt.

私は何を間違っていますか?

また、Linux ターミナルで bash.sh を実行できます。

4

2 に答える 2

5

ターミナルでスクリプトを実行すると、ログインしているアカウントで実行されます。検索パスなどを使用してシェルをセットアップしています。

php がスクリプトを実行するとき、シェルのセットアップはなく、webserver ユーザー アカウントで実行されます。実行時:

  • ファイルへの完全なパスがあることを確認してください。 swipl十分ではありません。/path/to/swipl
  • Web サーバー プロセスに、必要なものすべてを取得するのに十分なアクセス権があることを確認してください。
于 2012-09-22T10:53:09.747 に答える
0

ほとんどの場合、パスまたは許可の問題です。たとえば、Web アプリケーションを実行するユーザーは、swiplプログラムがどこにあるのかわかりません。

コマンド ラインに 2>&1 を追加してからexec'ing してください。これにより、問題が何であるかがわかります。または、stderr の出力を Web サーバーのエラー ログ (または PHP エラー ログ。php.ini でそのパスと設定を確認してください) で見つけることができます。

于 2012-09-22T10:51:05.273 に答える