• 締切済み

system()関数の使い方について

PHPのsystem()関数を使ってWindowsのアプリケーション(C:\Program Files\MeCab\bin\mecab.exe)を実行しようと試行錯誤しています。 試行錯誤しながら以下のようなコードを書いたのですが、何も結果が返ってきません。 <?php $msg = system('C:\Program Files\MeCab\bin\mecab.exe C:\Program Files\MeCab\test-sjis.txt'); echo $msg; ?> 実験環境は、Windows XPにApacheを立ててPHP5をインストールしています。 動かなかった原因についてご指摘をいただけますと大変助かります。どうぞよろしくお願いいたします。

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

みんなの回答

noname#223623
noname#223623
回答No.1

var_dump($msg)の結果はどうなります? あと、systemでなくpassthruを使ったらどうだろう。 [マニュアルから引用] (systemは)成功時にコマンド出力の最後の行が返され、失敗時にFALSEが返されます。 コマンドを実行し、何の加工もせずに全てのデータをコマンドから直接返す必要がある場合、passthru()関数を使用してください。

dewyamada
質問者

お礼

ありがとうございました。 結局、コマンドパスにスペースが入ってることが原因でしたので、コマンドを\"でくくれば動くようになりました。

関連するQ&A

  • perl+win7でMecabを使う方法について

    Mecab http://mecab.googlecode.com/svn/trunk/mecab/doc/index.html ---perl script[UTF-8]-------- # my $cmd = `"C:/Program Files (x86)/MeCab/bin/mecab.exe" "C:/Program Files (x86)/MeCab/bin/test.txt"`; my $cmd = `"C:/Program Files (x86)/MeCab/bin/mecab.exe" "今日は晴れだ。"`; open(F,">test_out.txt"); print F $cmd; close F; ------------------- 1行目の方法で行うと成功しますが、2行目の方法で行うとファイルの読み込みを行っているようで失敗します。 直接文字を入れることで動作させたいのですが方法はありますでしょうか? また、様々なプログラムの知識をネットで拾い読みする感じで付けてきて、あまり体系的に勉強していません。こういった、事の分かる書籍などあれば教えて頂ければ幸いです。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • 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
  • system関数について

    c++ CLRでプログラミングしてます。 system関数を利用し、"Picture Manager"で任意の画像を表示したいのですがうまくいきません。 system("C:\\Program Files\\Microsoft Office\\Office12\\OIS.EXE D:\\Image\\1.JPG"); 上記のように指定してもなにも起こりません。 DOS窓では、 C:\Program Files\Microsoft Office\Office12>OIS.EXE d:\Image\1.JPG で動作するのですが・・・。 詳しい方おられましたら、ご教授ください。

  • Windowsでphpを動かす方法について。

    どうも、初めまして。 今、WIndows98上で、phpを動かしたいと思っています。そこで、 私は、windows98se+apache1.3.12+php3.0.16をインストールしました。 ActivePerlも入っています。perlは動いているのでapacheは正常に動作してい ると思います。しかし、.phpをブラウザから呼ぶと、「Internal Server Error」 が出てしまいます。いろいろ格闘してみたのですが、うまくいきません。 教えてください。ちなみに、dosプロンプトでphp.exe -vとするときちんとヴァージョンが表示されます。 私の環境は以下のとおりです。 phpはc:\php3に apacheはC:\Program Files\Apache Group\Apacheに 展開し、php3内のDLLは全てc:\windows\systemにコピーしました。 httpd.confを編集し、php3.iniを編集しc:\windowsにコピーしました。 以下がエラーログとiniファイル等の内容です。 長くなってしまいましたが、原因がわかる方おられましたら、よろしくお願いします。 =====errorlogの内容。 [Mon Apr 09 01:00:19 2001] [error] [client 127.0.0.1] (2)No such file or directory: couldn't spawn child process: c:/program files/apache group/apache/htdocs/test01.php3 =====phpファイルの内容。 <?php echo ("test<BR>"); ?> =====httpd.confの編集個所。 ScriptAlias /php3/ "c:/php3/" AddHandler cgi-script .php3 AddType application/x-httpd-php3 .php3 AddType application/x-httpd-php3-source .phps Action application/x-httpd-php3 "c:/php3/php.exe" =====php3.iniの編集個所。 include_path = "c:\php3" doc_root = "c:\Program Files\Apache Group\Apache\htdocs" extension_dir = "c:\php3" ; directory in which the loadable extensions (modules) reside

    • ベストアンサー
    • PHP
  • PHPでのsystem関数の処理ができないです。

    PHPでsystem関数を使ってアプリケーションを実行するだけの 簡単なプログラムを作ったのですが、 ブラウザでPHPのページが開き終わって 処理は全て終わった状態になるのですが、 アプリケーションが全く起動しません。 PHPのプログラムは以下の通りです。 ************************************************ <html><head> <title>アプリケーション起動</title> </head><body> <?php $user_cmd = "C:\phpdev5\www\himekuri\Himekuri.exe"; $cmd = escapeshellarg($user_cmd); system($cmd); ?> </body></html> ************************************************ $user_cmdで指定したアドレスにあるHimekuri.exeという アプリケーションを起動しようとしています。 開発環境は OS:Windows2000 phpdev5(MySQL,Apache)を使用 といった感じです。 system関数を使用するのに何か設定などがいるのでしょうか? 分かる方ご教授お願いいたします。

    • ベストアンサー
    • PHP
  • ワンクリック詐欺とみられる被害にあってしまい、hijackthisとい

    ワンクリック詐欺とみられる被害にあってしまい、hijackthisというツールで駆除しようと試みているのですが、パソコンが苦手なものでどれがfixすべきファイルか分からず困っています。 下の名前のなかで削除すべきものがおわかりの方がいらっしゃいましたら、ぜひ教えてください。 Logfile of Trend Micro HijackThis v2.0.2 Scan saved at 7:18:44, on 2010/05/04 Platform: Windows XP SP3 (WinNT 5.01.2600) MSIE: Internet Explorer v8.00 (8.00.6001.18702) Boot mode: Normal Running processes: C:\WINDOWS\System32\smss.exe C:\WINDOWS\system32\winlogon.exe C:\WINDOWS\system32\services.exe C:\WINDOWS\system32\lsass.exe C:\WINDOWS\system32\svchost.exe C:\WINDOWS\System32\svchost.exe C:\WINDOWS\Explorer.EXE C:\WINDOWS\system32\spoolsv.exe C:\Program Files\Apoint2K\Apoint.exe C:\Program Files\Fujitsu\IndicatorUtility\IndicatorUty.exe C:\Program Files\Fujitsu\Fujitsu Quick Touch\QuickTouch.exe C:\Program Files\Fujitsu\BtnHnd\BtnHnd.exe C:\Program Files\Fujitsu\PowerUtility\schedule\PUSCDaemon.exe C:\WINDOWS\System32\ezSP_Px.exe C:\Program Files\Apoint2K\ApMsgFwd.exe C:\Program Files\Fujitsu\chitose\updatenv.exe C:\WINDOWS\AGRSMMSG.exe C:\Program Files\Apoint2K\HidFind.exe C:\WINDOWS\system32\hkcmd.exe C:\Program Files\Apoint2K\Apntex.exe C:\WINDOWS\system32\igfxpers.exe C:\WINDOWS\system32\conime.exe C:\Program Files\Canon\MyPrinter\BJMyPrt.exe C:\Program Files\Common Files\Java\Java Update\jusched.exe C:\WINDOWS\system32\ctfmon.exe C:\Program Files\Messenger\MSMSGS.EXE C:\Program Files\Google\GoogleToolbarNotifier\GoogleToolbarNotifier.exe C:\Program Files\DAEMON Tools Lite\DTLite.exe C:\Documents and Settings\Owner\Local Settings\Application Data\Google\Update\1.2.183.23\GoogleCrashHandler.exe C:\Program Files\Bonjour\mDNSResponder.exe C:\Program Files\Justsystem\JSLIB32\JSQSF32.EXE C:\Program Files\Canon\IJPLM\IJPLMSVC.EXE C:\Program Files\Java\jre6\bin\jqs.exe C:\Program Files\Common Files\Microsoft Shared\VS7DEBUG\MDM.EXE C:\Program Files\Fujitsu\sa\bin\mpbtn.exe C:\Program Files\Norton AntiVirus\Norton AntiVirus\Engine\17.6.0.32\ccSvcHst.exe C:\Program Files\Fujitsu\sa\de\jsharp\bin\SBRSVC.EXE 載らなかったのですみません、2通目に続きます

  • visual studioでsystem関数

    visual studio 2005でsystem関数を使っていました. system("notepad"); は難なく実行できました. 他の実行ファイルも実行できるかと思い 「C:\Program Files\IrfanView」にある「i_view32.exe」を実行しようと思い, system("i_view32.exe"); で「デバックなしで開始」で実行させたところ 'i_view32.exe'は,内部コマンドまたは外部コマンド, 操作可能なプログラムまたはバッチ ファイルとして認識されていません. とエラーが出ました. もちろんC:\Program Files\IrfanViewのPATHは通してあります. しかしDebugフォルダにあるプログラムの実行ファイルをクリックで実行させたところ普通にi_view32.exeは起動しました. 「デバックなしで開始」で起動させたいのですがどうすればよいのでしょうか? 分かる方いたらよろしくお願いします.

  • System関数で変数を受け渡す方法

    Apache+PHP+MySQL1でサイトを作っています。 時間がかかる処理をバックグラウンドで処理したいのですが、メイン処理の変数をバックグラウンド処理に受け渡したいのですがうまくいきません。 http://www.stackasterisk.jp/tech/php/php02_02.jsp インターネットで調べたところ上記URLが見つかったので参考にサンプルを作ってみました。 --------sample.php(メイン処理)------- <?php $arg = 123456; System("/usr/local/bin/php bgprog.php $arg &"); ?> --------bgprog.php(バックグラウンド処理)------- <?php sleep(10); echo "読み込み完了<br>"; echo $arg; ?> このサンプルだと10秒スリープした後に「読み込み完了」と表示されるのですが$argが表示されません。 上記URLに「メインの処理から引数を渡したい場合には、bgprog 側できちんと受け取るようにしておかなければなりません」と書かれているのですがその方法がまったくわかりません。 このプログラム自体に無理があるのか、bgprog側でなんらかの処理をすれば解決するのかもわかっていません。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • Java 指定されたパスが見つかりませんのエラー

    Windows 8 (x64)を使っています。 jdk-6u45-windows-x64をダウンロードしてJavaを使っていましたが、 しばらくJavaを使ってなかったのですが 久しぶりにコマンドプロンプトでディレクトリ移動をしようとしたら 指定されたパスが見つかりません  というエラーが出ています。 これってPATHが通っていないというやつなんでしょうか? PHPやらWordPressやらApacheを入れてから出た気がします。 C:\Program Files\Java\jdk1.6.0_45\binのフォルダにjavac.exeファイルは ちゃんとあります。コマンドプロンプトでバージョン確認も出来ます。 今のPATHは C:\Program Files\Java\jdk1.6.0_45\bin;C:\Users\自分の名前\AppData\Local\Box\Box Edit\c:¥php;\C:\Program Files\MySQL\MySQL Server 5.5\lib です。 PATHが間違ってますか?

    • ベストアンサー
    • Java
  • CGIを開けない。。。

    apacheとphpを設定して動作確認したあとに、cgiも操作したいので、Active Perlというものをインストールしてみました。 phpは、http://localhost/で「C:/Program Files/Apache Software Foundation/Apache2.2/htdocs」のフォルダーを参照できるのですが、cgiを開くときには、どこのフォルダーに格納し、URLをどうすれば宜しいのでしょうか?(因みにcgi-binとhtdocsに格納し、http://localhost/***.cgiで試したのですが駄目でした。) Active Perlインストール後に変更した場所 ScriptAlias /cgi-bin/ "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/" <Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin"> AddHandler cgi-script .cgi .pl なお、perlの設定には、こちらhttp://www.jisaba.net/xp/actpeal/04.htmのサイトを参考にしました。 環境はWindowsVistaです。 どなたか宜しくお願い致します。

    • ベストアンサー
    • Perl