1

Linux マシンで C++ 実行可能ファイルを実行する PHP スクリプトを作成したいと考えています。exec() または system() PHP 関数を使用します。ただし、C++ 実行可能ファイルは実行されません。私のコードは次のとおりです。Proc はコンパイルされた C++ 実行可能ファイルです。まったく同じコマンドがシェルで正常に機能します。

echo system('/var/www/image_proc/proc "/var/www/image_proc/images/original/5_1.png" 70 0 0 "/var/www/image_proc/images/processed/5_2.png"');

ファイルの実行と書き込みのすべての権限を確認しました。また、パスの問題ではないことを確認するために絶対パスを使用しています。

誰が知っていますか、何が問題になる可能性がありますか? どんな助けでも大歓迎です。

4

1 に答える 1

1

問題は引用符の使用であると思われます。SHELL はこれらを展開/評価するかもしれませんが、system() への呼び出しはそうではありません。libc システム

したがって、推奨される解決策は次のとおりです。

<?php
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
    $src = "/var/www/image_proc/images/original/5_1.png";
    $dst = "/var/www/image_proc/images/processed/5_2.png";
    $cmd = sprintf("/var/www/image_proc/proc %s 70 0 0 %s", $src, $dst);
    $result = system($cmd, $retval);
    printf("Result: '%s'\n\nReturn value: %d\n\n", $result, $retval);
?>

これにより、コマンドの結果または有用なエラー情報が出力されます。特に重要なのは、何が起こったのかを知るための戻り値を返すことです。

于 2012-12-06T17:56:25.790 に答える