- ベストアンサー
phpからC言語を実行する方法
こんにちは phpからCファイルをコンパイルして作ったoutファイルを実行する方法はないのでしょうか? system("test.out"); とやってみたんですが、反応などがありません。 どなたかご存知の方いらっしゃいますか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#1,#2です。 >ローカル環境でphpからtest.outを実行すると正常に動作しましたが、 そもそもサーバ上ので動作確認が取れていないと言うことですね。 >エラーコード126 test.outをアップロード後に、実行可能ビットをオンにして下さい。具体的なうやり方はFTPに使っているソフトのヘルプなどを参照。 これが出来ても、環境の違いで動かない可能性もあります。 ローカルのテスト環境と、動かすサーバーのOSが同じであればおそらく大丈夫ですが。 レンタルサーバーにssh等でログイン出来ない環境で自作プログラムを動かすのは大変だと思いますよ。ローカルに全く同じ環境を作るくらいのつもりの方が良いでしょうね。
その他の回答 (3)
- php504
- ベストアンサー率42% (926/2160)
Cの実行ファイルならレンタルサーバでコンパイルしないとだめだと思いますがtest.outはレンタルサーバでコンパイルしたものでしょうか ローカル環境がサーバと同じOSやCPUなら動く可能性はありますがやはり動作させる環境でコンパイルするのが無難でしょう
補足
すみません。調べたところエラーコードが返っていたようです。 エラーコード126 commandが見つかったが実行可能なユーティリティではない場合に返ってくるエラーコードらしいのですが、どうにか実行可能にする方法はないのでしょうか?
- notnot
- ベストアンサー率47% (4900/10359)
#1です。 エラーすら出ないのですか?ログは確認してますか? HTTPサーバで動くPHPですか?コマンドラインで動くPHPですか? コマンドラインでtest.outは動くのですか? どういう反応を期待しているのですか?
補足
エラーは出ていません。 HTTPサーバで動くPHPです。 test.outはファイルを生成するプログラムで、 ローカル環境でphpからtest.outを実行すると正常に動作しましたが、 レンタルサーバーでphpからtest.outを実行するとうまくいきません。 ちなみにsystemのコマンド自体はレンタルサーバーでも動くことは確認しました。
- notnot
- ベストアンサー率47% (4900/10359)
フルパスで指定するとか、カレントディレクトリにあるなら ./test.out にするとか。
補足
すみません。フルパス指定や相対パスでの指定もやってみましたが同じでした。
お礼
回答ありがとうございます。 >test.outをアップロード後に、実行可能ビットをオンにして下さい。 やってみましたが、動きませんでした。 実行権限がないみたいで無理そうですね。 もう少し調べてみて、だめそうだったら違う方法を探してみようと思います。 ありがとうございました。