PHPを使用してLinuxサーバでC ++実行ファイルを実行する

私はホストされたサーバー上でC ++バイナリを持っています(Arvixe FYIでホストされています)。私は3つの入力が必要な私のウェブサイト上のフォームを持っています。私はこれらの3つの入力をPHPを使ってファイルに入れます。 PHP内からC ++アプリケーションを呼び出そうとしています。アプリケーションは2つのパラメータを取ります。最初は入力ファイル、もう1つは出力を出力するファイルです。

ターミナルを使用して実行しているときにアプリケーションがMacでうまく動作しますが、ホストされたサーバにアプリケーションを置いても実行されません。

スクリプト内のPHPコードは次のとおりです。

$user =  JFactory::getUser();
$time_date = date("m-d-Y").time();
$file1 = "model1_".$user->id."_".$time_date."_input.txt";
$file2 = "model1_".$user->id."_".$time_date."_output.txt";
$path1 = "/home/hhansen/public_html/ads/".$file1;
$path2 = "/home/hhansen/public_html/ads/".$file2;

$file_handle = fopen($path1,'w'); 

$content  =  trim($_POST['form']['Input 1'])."\r\n";
$content .= trim($_POST['form']['Input 2'])."\r\n";
$content .= trim($_POST['form']['Input 3'])."\r\n";

fwrite($file_handle,$content);
fclose($file_handle);

$output = exec("/home/hhansen/public_html/ads/./model1 $path1 $path2",$retval);

誰かが光を放つことができますか?入力ファイルが直接作成されています。私はサーバー内のアプリケーションに対して実行権限を持っています。私は、実行可能ファイルがまったく実行されていないか、アクセス権の問題などのために出力を生成していないかどうかはわかりません。

  • 私の構文ですか?
  • 間違った機能を使用していますか?
  • ターミナルにコマンドを送信して実行するために、PHPで何を使用する必要がありますか?
3
正しい。それは私の問題かもしれません。とにかく私のMac上のLinuxバイナリにコンパイルできますか?
追加された 著者 hanleyhansen,
たぶん私はちょうどLinuxのボックスでそれをコンパイルする必要がありますか?これが私の問題を解決すると思いますか?
追加された 著者 hanleyhansen,
私は私のホスティング会社がすべてのサーバでCentOSを使用していることを知っています。おそらくCentOSのボックスでコンパイルして良い形になっていますか?
追加された 著者 hanleyhansen,
知っている。私は、バイナリコンパイルが問題だったと仮定して、同じアーキテクチャの同じOSでコンパイルすると問題が解決するはずです。それはx86_64です。 CentOSをダウンロードして試してみます。ご協力いただきありがとうございます。
追加された 著者 hanleyhansen,
あなたはそれをLinuxバイナリにコンパイルしましたか? MacからLinuxにコピー&ペーストするだけではいけません。バイナリは "model1"です、正しいですか?
追加された 著者 FakeRainBrigand,
私はアーキテクチャに依存していると思いますが、クロスコンパイルのテクニックがあります。私は自分自身でそれをやっている経験はありませんが、gcc/g ++が良い解決策になるようです。このウィキペディアの記事もあります。
追加された 著者 FakeRainBrigand,
アーキテクチャが一致する限り。同じ命令セットを使用していない場合、あなたのサーバは何をするべきかを知らないでしょうそれ。
追加された 著者 FakeRainBrigand,
申し訳ありませんが、それは簡単ではありません。 cPanelをお持ちの場合は、PHPとApacheのバージョンとともに、左側のバーに表示されます。それは "i686"または "x86_64"かそのようなものでしょう。
追加された 著者 FakeRainBrigand,

1 答え

ほとんどの商用共有ホストはPHPをセーフモードで実行します。これはexec()を許可しないか、少なくともそれを特別なディレクトリに制限します。単純な実行可能ファイルで確認してください。

0
追加された
exec()は許可され、セーフモードは有効になっていません。
追加された 著者 hanleyhansen,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com