2006年7月14日

[PHP-users 29790] Re:Windows版 PHPで system関数が動作しない

初めまして。亀本と申します。
MLにメールを投げるのは初めてなので、かなりドキドキです。

> 【ソース】
> $command = '"C:\Program Files\PostgreSQL\8.1\bin\psql" -U foo -f
> "C:\Documents and Settings\foo\My Documents\data.sql" testdb 2>&1';
> $lastline = system($command, $retval);
>

> 【エラーメッセージ】
> 'C:\Program' は、内部コマンドまたは外部コマンド、
> 操作可能なプログラムまたはバッチ ファイルとして認識されていません。

不思議ですね。
当方でも適当なコマンドを実行しようとしたところ、ダブルクォートでくくられ
たコマンド等が二つ含まれている場合に同様のエラーが再現しました。

PHPの問題とは離れてしまい直接的な解決ではありませんが、ダブルクォートを
使わずに済むように、空白の混ざるパス指定に短縮名を使用するようにしてはど
うでしょう。
(最近の頭のいいコマンドプロンプトは、引数側のダブルクォートを省略しても
正しく解釈するようですが、それはちょっと解決策として怖いので。。。)

例えば上記のコマンドなら、
C:\PROGRA~1\PostgreSQL\8.1\bin\psql (中略
C:\DOCUME~1\foo\MYDOCU~1\data.sql
のような感じです。
なお、短縮名と長い名前は混在してもかまいません。 :)

通常は長い名前しか表示してくれませんが、dir /Xで短縮名も表示されるので、
確認したいときはどうぞ。
_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ns1.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://www.php.gr.jp/php/novice.php3

投稿者 xml-rpc : 2006年7月14日 04:09
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/39533
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。