レンタルサーバでphpがうまく動かない問題

このQ&Aのポイント
  • phpをレンタルサーバにアップしてもうまくいかない問題が発生しています。
  • localhostで実行すると正常に動作するが、レンタルサーバにアップすると動作しない。
  • file_put_contents関数とheader関数のエラーが発生している。
回答を見る
  • ベストアンサー

phpをレンタルサーバにアップしてもうまくいかない

Xamppのapacheを用いて localhostで次のプログラムを実行するとうまくいくのですが いざレンタルサーバにアップするとうまくいきません。 (whss.bizというphp,mysql対応サーバ) <?php if(isset($_POST['userid'])==True && isset($_POST['password'])==True) { $userid=$_POST['userid']; $password=$_POST['password']; $logFile=dirname(__FILE__).'/'.$userid.'.log'; if(file_exists($logFile)==False) { file_put_contents($logFile,$password); header("Location:backtotop.html"); } else { echo '<font color="red">このユーザーIDはすでに使われています。<br> 恐れ入りますが別のIDにして下さい。</font><br>'; } } ?> <html> <head> <title>新規登録画面</title> </head> <body> 新規ユーザー登録を行います。<br> 好きなユーザー名とパスワードをともに半角英数字で入力してください。<br> <form action="newuser.php" method="POST"> ユーザー名:<br> <input type="text" name="userid" size="25" /><br /> パスワード:<br> <input type="text" name="password" size="25"> <input type="submit" value="入力完了"> </form> </body> </html> これはユーザーIDとパスワードを登録するものなのですが、 Warning: file_put_contents(/home/brightsuger/public_html/brightsuger.log) [function.file-put-contents]: failed to open stream: Permission denied in /home/brightsuger/public_html/newuser.php on line 9 Warning: Cannot modify header information - headers already sent by (output started at /home/brightsuger/public_html/newuser.php:9) in /home/brightsuger/public_html/newuser.php on line 10 入力完了を押すと↑がでてきてしまいます。 1つ目のWarningにあるように サーバー上ではfile_put_contentsはできないのでしょうか? また、2つ目のWarningは意味がよくわかりません。

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

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

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

パーミッションによりファイルの作成に失敗した、ということ。ファイルを保存するディレクトリのパーミッションを確認してみる。(書き出しが許可されているかどうか) その後のエラーは、9行目でエラーメッセージが出力された後でheaderを出力しようとしたために「もうヘッダーは出力した後だよ」という意味で発生したものなので、9行目のエラーがなくなれば自然と消えるはず。

関連するQ&A

  • PHPについて質問です。

    PHP超初心者です。 初めて変数の変更プログラムを作ってみたのですが、 Warningエラーが出て、一部の機能が有効になりません。 henkou.php ↓↓↓↓ <?php $oldpass = $_POST["oldpass"]; $newpass = $_POST["newpass"]; $newpass2 = $_POST["newpass2"]; ?> <html> <head> <title>変数変更テスト</title> <meta name="robots" content="noindex,nofollow"> </head> <body> <form method="post" action="/henkou.php"> 古いパスワード:<input type="password" name="oldpass"><br> 新しいパスワード:<input type="password" name="newpass"><br> 新しいパスワード:<input type="password" name="newpass2"><br> <input type="submit" value="送信"> </form> <?php require "/conf/config.php"; if ("$oldpass != $password") { echo "パスワードが一致しません"; } else { echo "パスワード変更が完了しました。"; $password_file = file("/conf/config.php"); $password_file = str_reprace ("\"$password\" = \"$newpass\""); SaveFile("/conf/config.php"); } ?> </body> </html> config.php ↓↓↓ <?php $password = ""; // 設定前なので空白です ?> エラーは、 Fatal error: require() [function.require]: Failed opening required '/conf/config.php' (include_path='.:/usr/local/lib/php') in /home/***.net/henkou.php on line 21 と、 Warning: require(/conf/config.php) [function.require]: failed to open stream: No such file or directory in /home/***.net/henkou.php on line 21 ここからが本題ですが、 上のプログラムが正しいかどうか、確認していただきたいのです。 また、間違えている部分があったら、ご指導いただければと思います。 どなたか、手助けをお願いします!

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

    PHP勉強中の初心者です。会員登録画面を作り動作確認しているのですが ログインするときに下記のエラーが出ます。 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'nakahiro7'@'localhost' (using password: NO) in /home/nakahiro7/nakahiro7.webcrow.jp/public_html/public_html/login.php on line 15 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/nakahiro7/nakahiro7.webcrow.jp/public_html/public_html/login.php on line 15 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'nakahiro7'@'localhost' (using password: NO) in /home/nakahiro7/nakahiro7.webcrow.jp/public_html/public_html/login.php on line 16 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/nakahiro7/nakahiro7.webcrow.jp/public_html/public_html/login.php on line 16 Warning: mysql_query() [function.mysql-query]: Access denied for user 'nakahiro7'@'localhost' (using password: NO) in /home/nakahiro7/nakahiro7.webcrow.jp/public_html/public_html/login.php on line 18 Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/nakahiro7/nakahiro7.webcrow.jp/public_html/public_html/login.php on line 18 Access denied for user 'nakahiro7'@'localhost' (using password: NO) login.phpのソースは下記です <?php require('dbconnect.php'); session_start(); if ($_COOKIE['email'] != ''){ $_POST['email'] = $_COOKIE['email']; $_POST['password'] = $_COOKIE['password']; $_POST['save'] = 'on'; } if(!empty($_POST)) //ログインの処理 if ($_POST['email'] != '' && $_POST['password'] != ''){ $sql = sprintf('SELECT * FROM member WHERE email="%s" AND password="&s"', mysql_real_escape_string($_POST['email']), mysql_real_escape_string(sha1($_POST ['password']))); $record = mysql_query($sql) or die(mysql_error()); if ($table = mysql_fetch_assoc($record)) { //ログイン成功 $_SESSION['id'] = $table['id']; $_SESSION['time'] = time(); //ログイン情報を記録する if ($_POST['save'] == 'on') { setcookie('email',$_POST['email'],time()+60*60*24*14); setcookie('password',$_POST['password'], time()+60*60*24*14); } header('Location: index.php'); exit();}else{ $error['login'] = 'failed'; }}else{ $error['login'] = 'blank'; } ?> <div id="lead"> <p>アドレスとパスワードを入力しログインしてください</p> <p>メンバーズ登録がまだの方はこちら</p> <p>&raquo;<a href="join/">メンバーズ登録をする</a></p> </div> <form action="" method="post"> <d1> <dt>アドレス</dt> <dd> <input type="text" name="email" size="35" maxlength="255" value="<?php echo htmlspecialchars($_POST['email']); ?>" /> <?php if($error['login'] == 'blank'): ?> <p class="error">*アドレスとパスワードを記入ください</p> <?php endif; ?> <?php if ($eoor['login'] == 'failed'): ?> <p class="error">*ログインに失敗しました。正しく入力してください。</p> <?php endif; ?> </dd> <dt>pasword</dt> <dd> <input type="password" name="password" size="35" maxlength="255" value="<?php echo htmlspecialchars($_POST['password']); ?>" /> </dd> <dt></dt> <dd><input id="save" type="checkbox" name="save" value="on"> <label for="save">次回から自動的にログイン</label> </dd> </d1> <div> <input type="submit" value="Log in"/></div> </form> ググりまくりましたが解決できませんでした。 エラーの解決方法 その他ご指摘ありましたらお願いいたします。

    • ベストアンサー
    • PHP
  • phpでftpのアップロードができないのですが・・・

    phpでftpコマンドを使ったアップロードができません。どこが間違っているのでしょうか。 ftpで接続してログインするところまでは間違いなくできているのですが・・・よろしくお願いします。 file.php のフォーム部分 <form enctype="multipart/form-data" action="fileupload.php" method="post"> <input type="FILE" name="File"><br>     <input type="SUBMIT" value="送信">     <input type="RESET" vaiue="取消">     </form> fileupload.php のアップロード処理部分 //アップロード後のファイルの名前を仮にaaa.txtとする $file2 = "/public_html/aaa.txt"; if(isset($_REQUEST["File"])){ $file=$_REQUEST["File"]; } $ftp = ftp_connect($hostname) or die("接続失敗"); ftp_login($ftp,$user,$pass) or die("ログイン失敗"); ftp_put($ftp, $file2 , $file , FTP_ASCII) or die("アップロード失敗");

    • ベストアンサー
    • PHP
  • PHP4 LINUXサーバー

    「PHP4でカンタンWebDB構築ガイド」を見て、ファイルのアップロードのプログラムを書いてみましたが、参照..→送信の後に表示される筈のuserfile,user_file_name,user_file_size,user_file_typeの情報が表示されません。 また、このサンプルソフトでは、サーバーにアップロードされた筈のファイルが、具体的に何処のフォルダにアップロードされたのか分かりません。何処かデフォルトで保存される場所でもあるのでしょうか? <FORM ENCTYPE="multipart/form-data" ACTION="upload.php" METHOD=POST> <INPUT TYPE ="hidden" name="MAX_FILE_SIZE" value="1000"> <INPUT NAME="userfile" TYPE="file"> <INPUT TYPE="submit" VALUE="送信"> </FORM> <?php print "\$userfile = ". $userfile . "<BR>"; print "\$userfile_name = ". $userfile_name . "<BR>"; print "\$userfile_size = ". $userfile_size . "<BR>"; print "\$userfilei_type = ". $userfile_type . "<BR>"; ?>

    • ベストアンサー
    • PHP
  • drupalでエラーが表示される

    drupalを利用してサイトを作成しようとしております。 インストールまでは終わったのですが、どのページを表示しても以下のようなエラーが出てきます。 ---------- * Warning: file_put_contents(temporary://filezqqgJ1) [function.file-put-contents]: failed to open stream: "DrupalTemporaryStreamWrapper::stream_open" call failed in file_unmanaged_save_data() (line 1847 of /home/sites/*****.jp/users/************/web/public_html/includes/file.inc). * ファイルを作成できませんでした。 * Warning: file_put_contents(temporary://fileBtkpQw) [function.file-put-contents]: failed to open stream: "DrupalTemporaryStreamWrapper::stream_open" call failed in file_unmanaged_save_data() (line 1847 of /home/sites/*****.jp/users/************/web/public_html/includes/file.inc). * ファイルを作成できませんでした。 ---------- ↑このエラーの意味と対処法をお分かりの方がいましたら、教えていただけないでしょうか。 よろしくお願いいたします。

  • PHPの会員登録システムのエラーについて

    現在よくわるPHPの教科書という本を参考に、会員登録システムをつくっています。 しかし、本に書いてある内容をそのまま書いて実行してみてもエラーがでてきます。 そこでいろいろとネットで調べてみて以下のようなコードになりました。 <?php //$error = array('name'=>'', 'email'=>'', 'password'=>''); session_start(); if (!empty($_POST)) { if ($_POST['name'] === '') { $error['name'] = 'blank'; } if ($_POST['email'] === '') { $error['email'] = 'blank'; } if (strlen($_POST['password']) < 4) { $error['password'] = 'length'; } if ($_POST['password'] === '') { $error['password'] = 'blank'; } if (empty($error)) { $_SESSION['join'] = $_POST; header('Location: http:./check.php'); exit(); } } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>会員登録</title> </head> <body> <form action="" method="POST"> ユーザーID<input type="text" name="name" value="<?php print isset($_POST['name']) ? htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8'):"";?>" /> <?php if ($error['name'] === 'blank') { ?> <p class="error">*ユーザーIDを入力してください</p> <?php } ?> メールアドレス<input type="text" name="email" value="<?php print isset($_POST['email']) ? htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8'):"";?>" /> <br> <?php if ($error['email'] === 'blank') { ?> <p class="error">*メールアドレスを入力してください</p> <?php } ?> パスワード<input type="password" name="password"> <br> <?php if ($error['password'] === 'blank') { ?> <p class="error">*パスワードを入力してください</p> <?php } ?> <?php if ($error['password'] === 'length') { ?> <p class="error">*パスワードは4文字以上で入力してください</p> <?php } ?> <input type="submit" value="登録"> </form> </body> </html> しかしこれでもエラーがでます。以下のエラー Warning: Unknown: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /home/****/www/join/index.php on line 39 Parse error: syntax error, unexpected ':' in /home/kazu94/www/join/index.php on line 39 誰かこのエラーの謎を解いてください お願いします(泣)

    • 締切済み
    • PHP
  • phpでエラーが出て開発が進みません

    今、ファイルを指定してそのファイルを開き、表示するというプログラムを作っています。 それで Warning: file(): Filename cannot be empty in /home/runner/245ch/core.php on line 94 Warning: array_reverse() expects parameter 1 to be array, bool given in /home/runner/245ch/core.php on line 96 というエラーが出てしまいますどうか回答お願いします。 プログラムは <?php $i; $counter = 0; $filename = 'ip制限.dat'; // fopenでファイルを開く('r'は読み込みモードで開く) $fp = fopen($filename, 'r'); // fgetsでファイルを読み込み、変数に格納 $lines = file($filename, FILE_IGNORE_NEW_LINES); for($i = 0; $i <50 ; $i++){ if($lines[$counter] == $_SERVER["HTTP_X_FORWARDED_FOR"]){ header("location: https://245ch.teamperaggu.repl.co/ihan.html"); }; $counter = $counter + 1; } fclose($fp); // ファイルの指定 //エスケープする関数 function h($s){ return htmlspecialchars($s,ENT_QUOTES,'UTF-8'); } if(isset($_POST["sentaku"])){ $dataFile = trim($_POST['filee']) . ".dat"; $rr = trim($_POST['filee']) . ".dat"; } if(isset($_POST["kousin"])){ $message = trim($_POST['message']); $user = trim($_POST['user_name']); $ip = $_SERVER["HTTP_X_FORWARDED_FOR"] ; file_put_contents("ip.dat","user ". $user ." ". $ip . "\n", FILE_APPEND); //messageが空じゃなかったら if(!empty($message)){ //userが空の場合、名無しにする if(empty($user)){ $user = "名無し"; } //日付を取得する $postDate = date('Y-m-d H:i:s'); //ファイルに書き込むメッセージを作成する $newData = " /名前/ ". $user." /メッセージ/ ".$message." /時間 /".$postDate."\n"; //ファイルを開く $fp = fopen($dataFile,'a'); //ファイルに書き込む fwrite($fp,$newData); //ファイルを閉じる fclose($fp); } } //name="send_message"のPOST送信があった時 if(isset($_POST["send_message"])){ //送信されたname="message"とname="user_name"の値を取得する $message = trim($_POST['message']); $user = trim($_POST['user_name']); $ip = $_SERVER["HTTP_X_FORWARDED_FOR"] ; file_put_contents("ip.dat","user ". $user ." ". $ip . "\n", FILE_APPEND); //messageが空じゃなかったら if(!empty($message)){ //userが空の場合、名無しにする if(empty($user)){ $user = "名無し"; } //日付を取得する $postDate = date('Y-m-d H:i:s'); //ファイルに書き込むメッセージを作成する $newData = " /名前/ ". $user." /メッセージ/ ".$message." /時間 /".$postDate."\n"; //ファイルを開く $fp = fopen($dataFile,'a'); //ファイルに書き込む fwrite($fp,$newData); //ファイルを閉じる fclose($fp); } } //一行ずつデータを取り出して配列に入れる $post_list = file($dataFile,FILE_IGNORE_NEW_LINES); //逆順に並べ替える $post_list = array_reverse($post_list); ?> <style> a.text { position: absolute; /*自由に配置する指定*/ bottom: 0; /*下寄せの指定*/ right: 50; font-size: 25px; } a.test { position: absolute; /*自由に配置する指定*/ bottom: 0; /*下寄せの指定*/ right: 200; font-size: 25px; } a.test { position: absolute; /*自由に配置する指定*/ bottom: 0; /*下寄せの指定*/ right: 200; font-size: 25px; } </style> <body> <h1>掲示板へようこそ</h1> <!--ここで投稿内容を送信する--> <form action="" method="post"> <from method="post"> <input type="text" name="filee"> <input type="submit" name="sentaku" value="選択"> </from> メッセージ:<input type="text" name="message"> ユーザー名:<input type="text" name="user_name"> <input type="submit" name="send_message" value="投稿"> <input type="submit" name="kousin" value="更新"> </form> <h2>投稿一覧</h2> <ul> <!--post_listがある場合--> <?php if (!empty($post_list)){ ?> <!--post_listの中身をひとつづつ取り出し表示する--> <?php foreach ($post_list as $post){ ?> <li><?php echo h($post); ?></li> <?php } ?> <?php }else { ?> <li>まだ投稿はありません。</li> <?php } ?> </ul> <a class="text" href="kiyaku.html">利用規約</a> <a class="test" href="otoiawase.php">お問い合わせ</a> </body>

    • ベストアンサー
    • PHP
  • phpがうまく動きません。

    phpで4択のクイズを作りたいのですが 正解のラジオボタンを選んでもカウントされないのと 答え合わせを押すと正解だった箇所を赤く表示したいのですがなんて書けばよいのか どこにそのコードを入れるのかよくわかりません <状態> ・5つのデータがmyadminに保存されています ・データベースの内容は表示されます。 ・答え合わせを押すと正解のラジオボタンを選んだ数が表示されるようにしたいです ・保存ボタンは閉じても答えを保存するためにあります ・q_noは8ケタ固定であり、左から5つ目までは固定であと3桁は999問入れられるよう設定してあります ・q_ansはデータベースに答えの値(1~4)が入れてあります ・データベース名はproblemです <省略> $res_set = mysql_query($sql); while ($row=mysql_fetch_array($res_set)){ ?> <form method="POST" action="H2102.php"> <?php echo $row['q_no'] . " "; ?> <br> <?php echo $row['q_text'] . " "; ?><br><br> <br> <?php echo "ア"; ?> <input type="radio" name="q_ans" value="1"> <?php echo $row['q_point1'] . " "; ?> <br><br><br> <?php echo "イ"; ?> <input type="radio" name="q_ans" value="2"> <?php echo $row['q_point2'] . " "; ?> <br> <br><br> <?php echo "ウ"; ?> <input type="radio" name="q_ans" value="3"> <?php echo $row['q_point3'] . " "; ?> <br><br><br> <?php echo "エ"; ?> <input type="radio" name="q_ans" value="4"> <?php echo $row['q_point4'] . " "; ?> <br><br><br> <br> <input type = "submit" name="save" value="保存"> <?php if(isset($_POST['save'])){ $_SESSION['save'] = $_POST['q_ans']; //保存すると選んだ回答を保存 } ?> <?php } ?> </form> <form method="POST" action="H2102.php"> <input type = "submit" name="ans" value="答え合わせ"> <?php //正解かどうかをチェック if(isset($_POST['ans'])){ $a = $_SESSION['a']; if($row['q_no'] == $_POST['q_no'] && $_POST['q_ans'] || $_SESSION['save'] == $row['q_ans'] ){ $_SESSION['a'] = $a + 1; //q_noが一致かつ保存した値または選んだ解答(値)が一致していれば1問につき1つカウントする $a = $_SESSION['a']; } echo $a; //カウントされているかをチェック } ?> <input type = "submit" name="del" value="カウント初期化"> <?php if(isset($_POST['del'])){ session_unset(); } ?> </form> <br> <?php } ?> 足りない情報があれば追記します

    • 締切済み
    • PHP
  • PHPに関することで、ご教授頂けたら嬉しいです。

    PHPに関することで、ご教授頂けたら嬉しいです。 エラーメッセージを$_SESSION["error_msg"]に格納し、headerを使いエラーメッセージ用のページに飛ばすよう設定したところ、 89行|if ( FALSE === file_exists(CUSTOMER_LIST_BACKUP_DB) ) { 90行| if ( FALSE === touch(CUSTOMER_LIST_BACKUP_DB) ) { 91行| $_SESSION["error_msg"] = "新規バックアップファイル作成できませんでした<br>\n"; 92行| header("Location:".ADIMN_ERROR_MSG_PAGE); 93行| } 94行| if ( FALSE === copy(CUSTOMER_LIST_DB,CUSTOMER_LIST_BACKUP_DB)) { 95行| $_SESSION["error_msg"] = "バックアップファイルのコピーに失敗しました<br>\n"; 96行| header("Location:".ADIMN_ERROR_MSG_PAGE); 97行| } else { 98行| $_SESSION["msg"] = "customer_list_backupファイルを作成しました<br>\n"; 99行| header("Location:".ADIMN_MSG_PAGE); 100行| } 101行|} 以下のようなエラーメッセージが表示されました。headerの前に空白などは入れてないとおもいます。 また、header("Location:".ADIMN_ERROR_MSG_PAGE);を2~3回繰り返し記載することも問題なのでしょうか? Warning: touch() [function.touch]: Unable to create file /home/users/nori/maildb/customer_list_backup.dat because Permission denied in /home/users/nori/public_html/admin/customer/list.php on line 90 Warning: Cannot modify header information - headers already sent by (output started at /home/users/nori/public_html/admin/customer/list.php:90) in /home/users/nori/public_html/admin/customer/list.php on line 92 Warning: copy(/home/users/nori/maildb/customer_list_backup.dat) [function.copy]: failed to open stream: Permission denied in /home/users/nori/public_html/admin/customer/list.php on line 94 Warning: Cannot modify header information - headers already sent by (output started at /home/users/nori/public_html/admin/customer/list.php:90) in /home/users/nori/public_html/admin/customer/list.php on line 96

    • 締切済み
    • PHP
  • PHPから書き換え

    尻取りゲーム用に書いたPHPスクリプトの一部ですが CGIに書き換える方法がよくわかりません。 教えていただけませんでしょうか。 ============================================ if(isset($_POST['shiritori'])){ $rest = mb_substr($shiritori, -1, 1, "SJIS"); $hajime = mb_substr($shiritori, 0, 1, "SJIS"); if(($name != "") && ($shiritori != "")){ if($hajime == $key){ setcookie("name", $name, $expire); $key = file($keyfile); $fp = fopen($keyfile, "w"); fputs($fp,$rest); fclose ($fp); $word = "".$shiritori."<hr>"; $lines = file($logfile); $fp = fopen($logfile, "w"); fputs($fp,$word); for($i = 0; $i < $logmax-1; $i++) fputs($fp, $lines[$i]); fclose ($fp); } } else{ print"記入漏れはありませんか<br>"; print"次は<b>" .$key. "</b>から始まる語です。<br>"; } ============================================ どうぞよろしくお願いします。

    • 締切済み
    • CGI

専門家に質問してみよう