PHPで書き込みができない理由とは?

このQ&Aのポイント
  • PHPでの書き込みができない理由について解説します。
  • PHPでファイルへの書き込みができないときの対処法を紹介します。
  • PHPの設定やファイルパーミッションの問題が書き込み不能の原因になることがあります。
回答を見る
  • ベストアンサー

PHP

PHPで書き込みができません。なぜでしょうか? <?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { $erandayoubi = $_POST['youbi']; foreach($erandayoubi as $youbi){ $youbi2=$youbi2.$youbi. ','; } $youbi3 = rtrim($youbi2, ","); $fp = fopen("/etc/cron.d/autopbxrestart", "w"); fwrite($fp, $_POST['opt'] .$_POST['fun']. " " .$_POST['jikan']. " * * " .$youbi3. " root /usr/local/sbin/auto_pbxrestart.pl"); fclose($fp); } ?>

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

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

  • ベストアンサー
回答No.1

PHPの実行時のユーザー名と、 書き込み先のユーザー名&パーミッションは大丈夫ですか? (大抵PHPはnobodyかapacheなどのゲスト権限しかありません) それと、PHPでシステムフォルダ内を書き込むのは マジで危険なので、やめた方がいいですがね。 CRONをいじりたいならそこではなく、 ユーザーCRON側を使うことを強くお勧めします。 そのファイル所有者rootじゃないですか? CRONで、ユーザーフォルダ内の特定のファイルを 実行するようにさせて、そのファイル(つまりユーザー権限) にやりたいことを書き込んでいく方がいいですよ。

akio123
質問者

お礼

ありがとうございます^_^

関連するQ&A

  • PHP

    PHPで下のPHPが読み込まれません。なぜでしょうか? <?php: $result = array(); $path = '/etc/cron.d/autopbxrestart'; $handle = fopen($path, 'r'); while(false !== ($line = fgets($handle))){ list($fun, $jikan, $hi, $tuki,$youbi) = explode(' ', $line); $result{0} = $fun; $result{1} = $jikan; $result{2} = $hi; $result{3} = $tuki; $result[4] = $youbi; echo $result{0}; echo $result{1}; echo $result{2}; echo $result[3]; echo $result[4]; fclose($handle); } ?> <php if ($_SERVER['REQUEST_METHOD'] === 'POST') { $erandayoubi = $_POST['youbi']; foreach($erandayoubi as $youbi){ echo ' '. $youbi. '曜日 '; } echo $_POST['jikan']. "jikan".POST['fun']. "分 実行有無:[".$_POST['opt']. "]を設定しました。"; ?>

    • ベストアンサー
    • PHP
  • PHP

    OPENファイル(書き込み)をファンクション化したい。どうしたらいいでしょうか? <?php ///////////////////////////////////////////////////////////////////// //定数 ///////////////////////////////////////////////////////////////////// //クーロンのパス $path = '/etc/cron.d/auto_pbxrestart'; ///////////////////////////////////////////////////////////////////// //クーロンの設定の書き込み ///////////////////////////////////////////////////////////////////// if ($_SERVER['REQUEST_METHOD'] === 'POST') { // 曜日を1,2,4,5とカンマをはさむ $selectday = $_POST['day']; foreach($selectday as $day){ $day2=$day2.$day. ","; } // 最後はカンマをはずす $day3 = rtrim($day2, ","); if ($day3 == ""){ $yday3="*"; } // クーロンファイルに書き込む $fpt = fopen($path, 'w'); if ($fpt == false) { print "このファイルには書き込みできません。<br>\n"; } //実際にクーロンに書き込みする(「* *」は月日なので今回は設定対象にならない) fwrite($fpt, $_POST['opt'] .$_POST['nminute']. " " .$_POST['nhour']. " * * " .$day3. " root /usr/local/sbin/auto_pbxrestart.pl"); fclose($fpt);

    • ベストアンサー
    • PHP
  • PHP

    PHPでFunctionで配列の渡し方が間違っています。$arr['opt']などの書き方をどうやって変えればいいですか? $arr = array( 'opt' => $_POST['opt'], 'nminute' => $_POST['nminute'], 'nhour' => $_POST['nhour'], 'days' => $days ); function OpenWrite($arr){ /* クーロンのパス */ $path = '/etc/cron.d/auto_pbxrestart'; try{ /* クーロンファイルに書き込む */ $fpt = fopen($path , 'w'); if ($fpt == false) { $message = "このファイルには書き込みできません。<br>\n"; } /* 実際にクーロンに書き込みする(「* *」は月日なので今回は設定対象にならない)*/ $cron_config = $arr['opt'] . $arr['nminute'] . " " . $arr['nhour'] . " * * " .$arr['days'] . " root /usr/local/sbin/auto_pbxrestart.pl"; fwrite($fpt , $cron_config); fclose($fpt); return $message; }catch (Exception $e){ echo "例外処理が発生しました"; } }

    • ベストアンサー
    • PHP
  • PHP

    <?php $tmpfname = tempnam("/var/tmp", "auto_pbxrestart"); $cmd = "/usr/bin/sudo chown 777 ".TEMP_PATH; exec($cmd, $output, $return); $cmd = "/usr/bin/sudo chown apache::apache ".TEMP_PATH: exec($cmd, $output, $return); $handle = fopen($tmpfname, "w") if ($handle == false) { $status = '01'; print "debug02err"; } /* 実際にクーロンに書き込みする(「* *」は月日なので今回は設定対象にならない)* $cron_config = $arr['opt'] . $arr['nminute'] . " " . $arr['nhour'] . " * * " .$arr['days'] . " root /usr/local/sbin/auto_pbxrestart.pl"; fwrite($fpt , $cron_config); fclose($fpt); /* テンポラリのクーロンの設定をして本番のクーロンに設定をする */ print "debug04=".$cmd.":".$return."<br>"; $cmd = "/usr/bin/sudo cp -f " . CRON_DAILY_ESTAB . " " . CRON_DAILY_ESTAB . ".bak"; exec($cmd, $output, $return); $cmd = "/usr/bin/sudo cp -f " . TEMP_PATH . " " . CRON_DAILY_ESTAB; exec($cmd, $output, $return); unlink($tmpfname); print "debug05 = ".$cmd.":".$return."<br>"; /* 正常終了 */ ?>

    • ベストアンサー
    • PHP
  • phpのエラー

    phpで $fp = fopen("test.txt", a);//ココ1 $jyusin = $_POST['score'];//ココ2 fwrite($fp, $jyusin); fclose($fp); $f = fopen("test.txt", r);//ココ1 echo fgets($f); fclose($f); ココ1の場所でUse of undefined constant...というエラー ココ2の場所でUndefined index...というエラー 上記のエラーはどうしたら直りますか。 因みにissetで隠す方法以外でお願いします。

    • ベストアンサー
    • PHP
  • PHP初心者です、教えていただけすか。

    /public_html /test のtest.txtの文字列をtest.phpで表示させたいのですが、 下記の文では表示されません、どこがおかしいのか教えてください。 <?php $fp = fopen ('test.txt', 'w'); $date = "test\n"; var_dump (fwrite($fp, $date)); fclose ($fp); ?>

    • ベストアンサー
    • PHP
  • さくらサーバーのcronでphpを動かしてファイルを作りたい。

    さくらサーバーのcronでphpを動かしてファイルを作りたい。 cron.php <?php $date = date("Y/m/d H:i:s"); $fp = fopen("./cron.txt", "w"); flock($fp, LOCK_EX); fputs($fp,$date); fclose($fp); print "cron成功"; ?> cron報告レポートには[cron成功]の文字が出ているので、cronコマンドは間違っていないのですが、cron.txtが作れていません。 直接、cron.phpにアクセスすると、[cron成功]と文字が出てcron.txtも作れています。 どうすればcron.txtが作れるのでしょうか。 よろしくお願いします。

  • PHPでのファイル操作

    Phpで一覧画面を作成しています。 フォームからの情報をリストごと各行でテキストファイルに書き込ませています。 管理画面で削除、変更を行いたいんですが、特定のファイルの行数を削除できないので困っています。 $garls_list = file("./dat/garls_list.php"); $fp = fopen("./dat/garls_list.php", "w"); foreach ($garls_listt as $dat_line => $new_list) { if ($dat_line == $_POST["list"]) { // 何も書き込まない→この行を削除したと同一 } else { fwrite($fp, $new_list); } } fclose($fp); これだとファイルが真っ白になってしまいます。 詳しい方がいらっしゃいましたらご教授お願いします。 . グレード この質問に補足する.

    • 締切済み
    • PHP
  • PHPのfrrite関数

    お世話になります。 PHPのfwrite関数について質問です。 下記の様な記述で、アクセスがあった際に$lineをdata.txtに保存する場合、同じタイミングで複数のアクセスがあった場合などにエラーは起きないのでしょうか? エラーが起こりうるのであれば、その対処方法を教えて頂きたいです。 $fp = fopen("data.txt", "w"); fwrite($fp, $line); fclose($fp);

    • 締切済み
    • PHP
  • 新規ファイルを作成する

    にはどうしたらいいのでしょうか? <?php $file='gomi.dat'; $in=isset($_POST['in'])?$_POST['in']:'bad'; if(file_exists("$file")) { $a=file("$file"); foreach($a as $value) { echo "$value<br/>"; } } $fp=fopen("$file","w"); // <-------------- fwrite($fp,"$in\n"); fclose($fp); ?> <form method="post" action="<?= $_SERVER['PHP_SELF'] ?>"> <input type="text" name="in"/> <input type="submit" value="send"/> </form> は動きませんが $fp=fopen("$file","w"); // <-------------- を $fp=fopen("$file","r+"); // <-------------- としてあらかじめ空の gomi.dat (モード777)を作っていれば動きます どうしたら $fp=fopen("$file","w"); // <-------------- にしても動くようになるでしょうか?

    • ベストアンサー
    • PHP