質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

Q&A

0回答

1395閲覧

phpファイル書き込みに失敗する原因が知りたい。

退会済みユーザー

退会済みユーザー

総合スコア0

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

0グッド

0クリップ

投稿2021/09/30 05:38

編集2021/09/30 05:56

提示コードですがなぜファイル書き込みに失敗するのでしょうか? board.txtは存在しています。vimエディタでファイルの中身を見ると空なのですが原因がわかりません。

※下記画像は上のboard.txtファイル問題のファイルです。またhtmlディレクトリに格納しています。同じディレクトリの中です。
イメージ説明
イメージ説明

参考サイト: https://flytech.work/blog/7671/#i-4

OS: さくらvps CentOS stream8

index.php
<!DOCTYPE html> <html> <head> <title>test</title> <meta charset="UTF-8"> </head> <body> <center> <h1> 掲示板 </h1> <?php $file = "board.txt"; if(file_exists() == true) { $board = json_decode(file_get_contents($file)); foreach($board as $message) { echo '<p>' ,$message[0], '</p>'; echo '<p>' ,$message[1], '</p><hr>'; } } ?> <form action="input-text.php" method="post"> <p> 名前 </p> <input type="text" name="name"> <p> 文章 </p> <textarea name="comment" cols="30" row="5"></textarea></br> <input type="submit" value="投稿"> </form> </center> </body> </html>
text-input.php
<!DOCTYPE html> <html> <head> <title> 入力 </title> <meta charset="UTF-8"> </head> <body> <?php $file = "board.txt"; if(file_exists() == true) { $board = json_decode(file_get_contents($file)); } $board[] = [$_REQUEST['comment'],$_REQUEST['name']]; if (file_put_contents($file,json_encode([$_REQUEST['comment'],$_REQUEST['name']])) == false ) { echo 'ファイル書き込み失敗'; } foreach($board as $message) { echo '<p>' ,$message[0], '</p>'; echo '<p>' ,$message[1], '</p><hr>'; } ?> </body> </html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

itagagaki

2021/09/30 05:51

そのファイルのパーミッション、そのファイルのあるディレクトリのパーミッションはどうなっていますか?
AbeTakashi

2021/09/30 05:53

$_REQUESTを使ってるので、別のプログラムから呼び出される前提のプログラムだと思います。その呼び出し元のプログラムも質問文に追記してください(cookieを使ってるとかなら、cookieをセットするプログラムを追記してください)。
退会済みユーザー

退会済みユーザー

2021/09/30 05:57

追加しました。
m.ts10806

2021/09/30 05:59 編集

言うほど多岐には渡らないのでエラー確認して自身でなんとかしてください。 VPSでやろうかって人が自分で解決できないのはおかしい。
退会済みユーザー

退会済みユーザー

2021/09/30 06:59

getpwd()で書き込もうとしている現在ディレクトリを表示したら良いかと
AbeTakashi

2021/09/30 08:31

itagakiさんが指摘しているパーミッションの確認、$fileを相対パスじゃなくフルパスにしてみる(gauさんの指摘も参考に)、あとはfile_put_contents()の直前で[$_REQUEST['comment'],$_REQUEST['name']]を表示してみるなどしてみてはどうでしょう(もしかして空っぽなのかもしれないとか考えつきますよね?)。過去の質問見ても、自分でまだ調査できることがあるのにもかかわらず、それをせずに質問をされている形跡があります。
退会済みユーザー

退会済みユーザー

2021/10/01 00:29 編集

ほぼ丸投げ質問ばかりで低評価貰って、マルチポストも平気で行い、回答付かなくなったらアカウント作り直しを繰り返している悪質質問者です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問