• 締切済み

Linux上で実行関数使用

Windowsで作成したphpプログラムをLinuxに移動させようとしています。 そのプログラムの中ではC言語で作成したプログラムの実行形式(.exe)をshell_execを使って実行させています。 Linux上で動作させる場合は.outを実行すればよいとはわかるのですが、 どの実行関数を試してみてもパスが通らないか、通っても動作していなor結果が返ってこないようで、全く反応がありません。 .outを単体で実行させた場合は問題なく動作するので、C言語のプログラム上の間違いではないです。 どなたかLinux上で、phpで実行形式を動かす方法を知りませんか?

  • PHP
  • 回答数1
  • ありがとう数2

みんなの回答

  • _chihiro_
  • ベストアンサー率63% (26/41)
回答No.1

PHPでは、shell_exec() exec() system()など、プログラムを実行する関数は多くあります。 それらを試して動作しないというのであれば、.outというファイルに問題があるような気がします。 .outのパーミッションや、コンパイル方法(.exeを.outにリネームしただけではないですよね)などを再度チェックしてみてください。 できれば、ソースも見れた方が解答しやすいかと思います。 ----PHPマニュアル[プログラム実行]---- http://jp.php.net/manual/ja/ref.exec.php

参考URL:
http://jp.php.net/manual/ja/ref.exec.php
seagal07
質問者

お礼

返信が遅れて申し訳ありません。ありがとうございます。 現在はLinux機が手元にない状態なので試すことができませんが、 今度、パーミッションなどを見直してみたいと思います。

関連するQ&A

  • Linuxで実行ファイルを実行

    Linux上でC言語をコンパイルし、作成された実行形式ファイルを実行しようとしたのですが、実行できません。 作業フォルダは /var/www/html です。 gcc program.c でコンパイル、 作成されたa.out(ls でフォルダ内にあるのは確認済です) を以下の方法で実行しようとしましたが、全てできませんでした。 1. [root@host-210-161-57-177 html]# a.out bash: a.out: command not found 2. [root@host-210-161-57-177 html]# ./a.out opendir: No such file or directory 3. [root@host-210-161-57-177 html]# %./a.out bash: fg: %./a.out: no such job 4. [root@host-210-161-57-177 html]# % ./a.out bash: fg: %: no such job gcc -o program program.c でファイル名を指定してコンパイルしてみても同様の結果でした。 ご存じの方、どうかご回答をよろしくおねがいします。

  • PHPでexeファイル実行

    C言語でMPG形式の画像ファイルを読み込み、画像処理をしてテキスト形式で画像データを出力するプログラムを作成したのですが、 これをPHPプログラム内で動作させ、テキストデータ(できればバイナリのほうがいい)を読み取りたいと思います。 これはexeファイルをexecやsystem関数で実行することで解決できるのでしょうか? また、C言語の画像処理プログラムが画像を読み込んでからテキストデータを作成するまで1分ほどのタイムラグがあります。 どうすればPHP内の処理でexeファイル実行→exeがデータベースから画像を読み込む→ 1分処理待ち→テキスト作成→作成されたテキストデータをPHPで読み込み とできるのでしょうか? ちなみに、exeファイルとphpで作成した画像データベースはサーバー機に置くつもりです。 テキストデータを介さなくても、C言語プログラムからphpに直接データを渡す方法があればそちらのほうが望ましいです。 連続投稿で申し訳ないのですが、急を要するのでぜひともご解答お願いします。

    • ベストアンサー
    • PHP
  • PHP(Windows)でコマンド実行

    Windows上のapacheとPHPで、ベーシック認証のIDとパスワードを登録する仕組みを作成しているのですが、execが思ったように動きません。 以下にその部分だけを実行できるものを書きます。 <?php $com="C:\\Program Files\\xampp\\apache\\bin\\htpasswd.exe C:\\Program Files\\xampp\\apache\\.htpasswd id pass"; //$com="\"C:\\Program Files\\xampp\\apache\\bin\\htpasswd.exe\" \"C:\\Program Files\\xampp\\apache\\.htpasswd\" id pass"; //$com="dir"; exec($com,$output); print_r($output); ?> 原因はなんとなく、プログラムとパスワードファイルのパスの中にあるスペース(Program Files)だと思い、二重引用符で囲ってみたりした(一つ目のコメントのように)のですが、結果は同じでした。 二つ目のコメントのようなdirコマンドはちゃんと動きます。 どのようにすれば、パスを指定した実行ファイルが動作するのでしょうか?

    • 締切済み
    • PHP
  • php5でjavacを含むシェルの実行ができない

    こんにちは。シェル、php5初心者です。 まずはそれぞれのソースを記します。 j.sh ~~~~~~~~~~~~~~~~~~~~~~ #!/bin/bash javac Hello.java java Hello ~~~~~~~~~~~~~~~~~~~~~~ Hello.java ~~~~~~~~~~~~~~~~~~~~~~ public class Hello { public static void main(String[] args) { System.out.println("Hello, World"); } } ~~~~~~~~~~~~~~~~~~~~~~ test.php ~~~~~~~~~~~~~~~~~~~~~~ <?php $output = shell_exec('./j.sh'); echo "<pre>$output</pre>"; ?> ~~~~~~~~~~~~~~~~~~~~~~ 以上のプログラムを使用しtest.phpを実行したときにshell_exec関数によってWebブラウザ上にHello,Worldと表示させたいのですが、コンパイルすらされていないみたいです。どうしたらよいでしょうか。 端末から./j.shのようにシェルを実行するとしっかりとHello,Worldと結果が返ってくるのですが。 ちなみにjavacを含まないシェル(ls -l,cpなど)はphpから実行できました。 どうかよろしくお願いします。 os vine linux 4.3

    • 締切済み
    • PHP
  • PHPでcurl実行

    お世話になります。 PHPでcurlを使用して外部のサーバ上にあるプログラムを実行しようとしています。 $command = "curl -m 10 http://~~?param=~~~"; $result = shell_exec(command); このようにプログラム上で記述しているのですが、うまく動作しません。 正常な動作としては、処理を行った後に「TRUE」という文字列が返ってくるはずなのですが、 画面上に$resultの値を出力してみると、「~~~</body></html>」と、 なぜかHTMLタグが返ってきており、正常な処理が行われません。 ためしにコマンドライン上より curl -m 10 http://~~?param=~~~ を実行すると、「TRUE」という文字が表示されてきちんと動作しますので、外部に置いてある プログラムの問題ではなく、こちらで作成したPHPでの記述の仕方に問題があると思われるのですが どこを修正するべきか、アドバイス等いただけないでしょうか。

    • 締切済み
    • PHP
  • phpからlinuxコマンドを実行した場合

    phpで質問すればよいのかlinuxで質問すればよいのか微妙なのですが、 phpのexec関数でlinuxにコマンドを複数発行した場合の質問です。 例えば、cmdAとcmdBがあって、cmdBがcmdAに依存している場合(例えばcmdAで生成されたファイルをcmdBで使用するときとか)、下記のようにして、問題なのでしょうか? ---------------- exec(cmdA); exec(cmdB); ---------------- 上記のように連続でコマンドを発行すれば、cmdBはcmdAの処理が終わってから実行されるのでしょうか? 以上、よろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHPからCプログラムを実行して実行結果をHTML上に表示

    PHP初心者です。PHPからCプログラムを実行して実行結果をHTML上に表示する方法が分からなく困っています。 Cプログラムの中身は、 #include <stdio.h> int main(){ printf("Hello."); } です。 phpの中身は、 <HTML> <HEAD><TITLE>Cプログラム呼び出し</TITLE></HEAD> <BODY> <?php $cmd = "test.exe"; $a = exec($cmd); echo $a; ?> </BODY> </HTML> としており、調べてみるとexec()関数で外部プログラムを実行すると書いてあったのでこのように作成しました。

    • ベストアンサー
    • PHP
  • phpのshell_exec関数の動作に関する質問です。

    phpのshell_exec関数の動作に関する質問です。 環境はFreeBSD7.1 php5.2.13です。 もともとperlスクリプトtest.cgiがあって、 /path/test.cgi filea fileb (以後これをコマンドラインという) というコマンドラインが正常に実行されることが確認済みです。 このコマンドラインが実行されるとfilebの内容が変化します。 次にphpスクリプトからコマンドラインを実行するために test.phpスクリプトの途中に、 shell_exec("/path/test.cgi $filea $fileb"); と書きました。 (test.cgiではperlライブラリを読み込んでいます。 phpには同等のライブラリがないためにやむを得ずこうしています。) ところがtest.phpを(ブラウザから)実行しても コマンドライン実行後に期待される$filebの変化がありません。 つまりコマンドラインが実行された形跡がないのです。 test.phpスクリプトの$filea, $filebが正しく変数展開されていることは確認済みです。 FireFoxブラウザから見るとtest.phpスクリプトは特にエラーもなく正常に実行されているように見えます。 質問 1 正常に実行できるコマンドラインをphpのshell_exec関数で実行できない理由としてどのようなことが考えられるでしょうか。

    • ベストアンサー
    • PHP
  • あるプログラム実行中に別のプログラムを起動したい

    とあるC言語で出来たa.outというプログラム実行中に、b.outというプログラムを実行するプログラム「c.c」を作成したいのですが、どのようにプログラミングすればよいでしょうか? a.outは無限ループするような十分に実行時間の長いプログラムです。 ちなみに、c.cはシェルスクリプト「c.sh」でも構いません。

  • WindowsでPythonで外部コマンドを動作させる時はどうしているのでしょうか?

    Webページの作成をPHPからPythonに書き換えようとしているのですが、 PHPの shell_exec関数がPythonに見当たらないので os.getstatusoutputを使おうしたのですが、Linuxでは動作し、Windowsでは正しく動作しませんでした。 最近まで、日本でPythonがはやり、元々Rubyより前に英語圏で使い続けられたものなので、すごいと思っていましたがWindowsで動かない関数があるとは思ってもみませんでした。 皆さんは、Pythonで外部コマンドを動作させる時はどうしているのでしょうか? このように、LinuxではOKでWindowsではアウトというものは他に何かあるのでしょうか? Pythonに期待していたのですが、今はPHPのままでプログラミングします。