以下のように、phpでsystem関数を用いて

$command = "php4 -q <ファイル名>.php";
system($command);

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

このQ&Aに関連する最新のQ&A

A 回答 (2件)

はじめまして、info_wolfさん。



的を得ていないアドバイスになるかも・・ですが、参考までに。

"php4"としているのはいわゆるphpパーサの実行ですよね?
#ファイル名.phpを解析するために。

であるならば・・・、

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

上記の事で実行は可能かと思いますが、一応試しにやってみては。
では。
    • good
    • 0
この回答へのお礼

Kizzさん、回答ありがとうございます。

#!/フルパス/php

で実行できるようになりました。
移動させる前のサーバでは、フルパスを
書かなくても実行できていたのですがねぇ。
気付きませんでした。

助かりました。
ありがとうございました。

お礼日時:2002/02/13 14:37

 権限が変わっただけなら、権限をつけてあげれば??



 そのコマンドが誰の持ち物で、どんな権限になっているのか調べて、apacheの実行ユーザと同じにしてあげればOKです。

ls -la
 で権限をみて、
chown
 で持ち主を変えるか
chmod
 で権限を変えるか

 を試してみて下さい。

この回答への補足

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

ありがとうございました。

補足日時:2002/02/12 20:34
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qループ forに関して for($i = $num ; $i < $max ; $i++)

phpの初心者です。

以下の記述ですが、上手にループしてくれません。

for($i = $num ; $i < $max ; $i++)

$num の部分に「0」を入れると稼動するのですが、変数を代入したいというのが希望です。

方法があったらご教授下さい。

Aベストアンサー

もう一度全体のコードを見直してみてください。
問題なく動作します。

$num = 1;
$max = 5;

for($i = $num ; $i < $max ; $i++){
echo $i."<br />";
}

Qphpで$chars{$num};とした場合の扱い

いつもお世話になっております。

下記のページのパスワードを生成するクラスを参考に見ていたところ、
http://www.plusmb.jp/2009/02/06/2439.html

クラスの最後の処理に、
$password .= $chars{$num};
とあります。

私自身が、初めて、$chars{$num};を見まして、
この場合、
$charsに入っているのが、英数字がずらっとならんだ中から、
$num文字目を抽出してきているようです。

こちらの挙動の解説が知りたくて、サイトなどを教えていただきたく
お願いになります。

Aベストアンサー

http://jp2.php.net/manual/ja/language.variables.variable.php

でしょうか。
可変変数の振舞を使った書き方ですね。

$string = 'abcde';
$a = $string{0}; // $a = 'a'
$b = $string{1}; // $b = 'b' になる。

$i = 2;
$c = $string{$i}; // $c = $string{2} --> $c = 'c'

可変変数は変数代入時の左辺にも使えるのですが、
訳が分からなくなるので、あまり使わないようにしています。

$aaa = 'bbb';
$$aaa = $aaa{0};

var_dump($bbb); // $bbb='b'

Qprint "{$data[$i][$j]}";の $dataと「直接関係」がある

<!DOCTYPE html>
<html>
<head>
<title>P185 Sample6-15▸ 多次元配列</title>
</head>
<body>

<?php

$data[0][0] = "東京";
$data[0][1] = 32;//$data[0][●]に東京のデータを格納します。
$data[0][2] = 25;
$data[1][0] = "名古屋";
$data[1][1] = 28;//$data[1][●]に名古屋のデータを格納します。
$data[1][2] = 21;
$data[2][0] = "大阪";
$data[2][1] = 27;//$data[2][●]に大阪のデータを格納します。
$data[2][2] = 20;
$data[3][0] = "京都";
$data[3][1] = 26;//$data[3][●]に京都のデータを格納します。
$data[3][2] = 19;
$data[4][0] = "福岡";
$data[4][1] = 27;//$data[4][●]に福岡のデータを格納します。
$data[4][2] = 22;

?>

<table border="2">
<tr bgcolor="#AAAAAA">
<th>都市名</th>
<th>最高気温</th>
<th>最低気温</th>
</tr>

<?php

for($i=0; $i<count($data); $i++){
print "<tr>";
for($j=0; $j<count($data[0]); $j++){
print "<td>{$data[$i][$j]}</td>";//配列の要素を出力する。
}
print "</tr>\n";
}

?>

</table>

</body>
</html>
以上ですが・・・だんだん難しくなってきました!
 さて
  print "<td>{$data[$i][$j]}</td>";の $dataと「直接関係」があるところは
 1) for($j=0; $j<count($data[0]); $j++){  
 2)$data[0][0] = "東京";~$data[4][2] = 22;
  の1)2)のどちらと「直接関係」があるのでしょうか?
 以上よろしくお願いいたします。

<!DOCTYPE html>
<html>
<head>
<title>P185 Sample6-15▸ 多次元配列</title>
</head>
<body>

<?php

$data[0][0] = "東京";
$data[0][1] = 32;//$data[0][●]に東京のデータを格納します。
$data[0][2] = 25;
$data[1][0] = "名古屋";
$data[1][1] = 28;//$data[1][●]に名古屋のデータを格納します。
$data[1][2] = 21;
$data[2][0] = "大阪";
$data[2][1] = 27;//$data[2][●]に大阪のデータを格納します。
$data[2][2] = 20;
$data[3][0] = "京都";
$data[3][1] = 26;//$data[3][●]に京都の...続きを読む

Aベストアンサー

> の1)2)のどちらと「直接関係」があるのでしょうか?

No.1さんと同じく質問の意味が理解できません。
わかり易く補足いただいた方が良いかと思います。



”の1)2)のどちらと「関係」があるのでしょうか?” というご質問であれば

”どちらとも関係あります” という回答になります。

Q$1$2$3 $2が空だったら$1と$3割る。

タイトルどおりです。

$1=100
$2=200
$3=300

これが

$1=100
$2=''
$3=300
と空だったら
($1+$3)/2
と、するにはどうしたら良いですか??

更に

$1=100
$2=''
$3=''
$4=400

と、空が二つ入った場合

$1=100
$2=200
$3=300
$4=400

と、折れ線グラフで表したら綺麗に直線にしたいんですが、どういう計算式、プログラムで出来ますか??

Aベストアンサー

まじめに答えれば「$1」なんて文法的に使えない例をあげられても
答えようがない

たとえば$aと$cだとして、変数名だけ見て$bが省略されているなんて
判断できない。


人気Q&Aランキング

おすすめ情報