- PR -

Windows上でsystem関数が動作していないようです!

1
投稿者投稿内容
ハムV
常連さん
会議室デビュー日: 2005/11/17
投稿数: 25
投稿日時: 2006-05-29 18:19
宜しくお願いします。

Linux上で動いていたPHPをそのままWindows上に持ってきたところ、
system関数だけ動作していないようです。

以下のような感じでhoge.tmpに書き込まれた内容を、
Shift-JISに変換してhoge.csvに上書きしたいのですが、

define("T_FILE", "files\hoge.tmp");
define("C_FILE", "files\hoge.csv");
system("nkf -s".T_FILE." > ".C_FILE);

(パスがバックスラッシュで表示されてますが、実際は円マークです)

出力されたhoge.csvが空っぽです。
hoge.tmpにはデータが書き込まれているので、system関数でcsvに上書きする時に
うまくいってないのでは?と思います。

Windows上でPHPのsystem関数を使う時は注意しないといけないようで、
PHPのSafe_modeはoffにしてあります。
他にチェックする箇所はありますでしょうか?

宜しくお願いします。
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-05-29 18:26
こんにちは。

nkf コマンドが Windowsの環境で実行できないのが原因ではないでしょうか。
ハムV
常連さん
会議室デビュー日: 2005/11/17
投稿数: 25
投稿日時: 2006-05-29 21:00
回答ありがとうございます。
引用:

nkf コマンドが Windowsの環境で実行できないのが原因ではないでしょうか。


確かにnkfコマンドが使えなかったので、ツールをインストールし、
コマンドプロンプトから実行できることを確認しましたが、
やはりできません。

system("nkf -s".T_FILE." > ".C_FILE);

"や.でのつなぎ方があやしいと思い、何パターンか試してみましたが、
同じ結果になるか構文エラーになりダメでした。

引き続き、宜しくお願いします。
Java僧
ぬし
会議室デビュー日: 2003/11/06
投稿数: 261
投稿日時: 2006-05-29 21:27
nkfコマンドをフルパスで書いたらどうなりますか?
1

スキルアップ/キャリアアップ(JOB@IT)