2016-06-21 6 views
1

私はCプログラム、つまりPHPの実行可能ファイルである '.exe'を実行しています。PHPからCプログラムを実行

ボタンをクリックするたびにPHPファイルを呼び出すHTMLとのインターフェースがあります。

PHPでは、シェルスクリプトを呼び出します。 だからPHP上で、私は次のようにします。次のように

echo shell_exec('sh auto_script.sh'); 

シェルファイルは、プログラムの.exeファイルを実行します。

./import -file.txt 
importは私の実行可能なCプログラムの.exeファイルとfile.txtをされている

私は今のところハードコーディングしています。

実行可能ファイル 'import'は、呼び出されたphpファイルと同じディレクトリに格納されます。

ターミナルでシェルスクリプトを実行すると、必要な出力で適切に実行されます。

しかし、私はPHPからそれを実行しようとすると、それは動作しません。私は今の時点でファイルに完全な権限を与えています。引数が文字列でなければならないことを意味し

文字列はshell_exec(文字列$ CMD)

、確か手段:

+1

スクリプト 'cd'は' import'プログラムが入っているディレクトリにありますか? '。/'は現在の作業ディレクトリでプログラムを見つけることを意味します。 – Barmar

+1

'shell_exec()'の引数を引用符で囲む必要があります。 – Barmar

+0

はいインポートは、phpファイルと同じディレクトリにある実行可能ファイルであり、私はshell_execの引数を引用符で囲んでいます。 –

答えて

0

[ shell_exec ]マニュアルページに簡単なチェックはshell_execは、次のように定義されていると言いますそれは引用符の中にあるべきです。ところで、あなたはとにかくここメディエータースクリプトを必要とし、そうしないでください。

echo shell_exec('./import "-file.txt"'); //Using relative paths 

は、scriptsフォルダにバイナリを置くことは悪い考えであることを言ったが、私はあなたが軌道に乗るのに役立ちます上記願っています。

+0

Cプログラムはシェルスクリプトで実行するとsegmentaionフォールトエラーが発生しますが、個別に実行するとエラーは発生しません –

関連する問題