• ベストアンサー

system関数

以下のように、phpでsystem関数を用いて $command = "php4 -q <ファイル名>.php"; system($command); コマンドラインからプログラムを実行していたんですが、ファイルを別サーバに移動させたところ、 実行できなくなりました。 双方ともphpのバージョンは4.0.6、 コマンドラインからphpを実行できるように設定されています。 変わった点はapacheのuserがnobodyから 他の名前に変更されています。 やはり、実行できないのはapacheのuserが変更されたのが 原因なのでしょうか? もし、そうならばどのように対処すればよいのでしょうか?よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Kizz
  • ベストアンサー率47% (30/63)
回答No.2

はじめまして、info_wolfさん。 的を得ていないアドバイスになるかも・・ですが、参考までに。 "php4"としているのはいわゆるphpパーサの実行ですよね? #ファイル名.phpを解析するために。 であるならば・・・、 ・php4でなく、これをそのphpがインストールされているマシン(#)上での  フルパス付きで指定  (#)おそらくapacheをたてているのと同マシンかと思いますが。 ・ブラウザからアクセスしたphpページからsystemやexec実行可能なように、  全てに実行権限(xをたてる。 chmod a+x *****)をたててみる。  #ページからのsystem,exec実行時はhttpdになったような気も・・(不明確) ・わざわざパーサ(php4)をコマンド文にかかず、ファイル名.php内で実行定義  してしまうのも楽。  ※ファイル名.phpの先頭に   #!/フルパス/php (ここでは実行ファイルがphpとして書いてますが、実質にあわせて) 上記の事で実行は可能かと思いますが、一応試しにやってみては。 では。

info_wolf
質問者

お礼

Kizzさん、回答ありがとうございます。 #!/フルパス/php で実行できるようになりました。 移動させる前のサーバでは、フルパスを 書かなくても実行できていたのですがねぇ。 気付きませんでした。 助かりました。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • mnabe
  • ベストアンサー率33% (427/1283)
回答No.1

 権限が変わっただけなら、権限をつけてあげれば??  そのコマンドが誰の持ち物で、どんな権限になっているのか調べて、apacheの実行ユーザと同じにしてあげればOKです。 ls -la  で権限をみて、 chown  で持ち主を変えるか chmod  で権限を変えるか  を試してみて下さい。

info_wolf
質問者

補足

早速の回答ありがとうございます。 上記のように試してみたんですが、 だめでした。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A