「PHP/ファイル入出力」の版間の差分

削除された内容 追加された内容
ページの作成:「== 読み込み == たとえば下記のようになる。 <syntaxhighlight lang="PHP"> <?php echo "読み込みテスト<br />" ; $fp = fopen("readTest.txt","r") ;…」
 
編集の要約なし
28 行
 
== 書き込み ==
Apacheなどのサーバー上でPHPによるファイル書き込みをする場合には、後述のようにセキュリティ上の設定や準備が、必要になる。
 
まず、ドキュメントルート( /var/www/html )のフォルダの所有者がもし root だと、Fedora系の場合、一般ユーザー上でのOS実行時にはファイル書き込みに失敗するので、フォルダ所有者を変更する(Fedora32 で2020年4月21日に確認)。
 
コマンド端末にて
<pre>
$ sudo chown ログインユーザー名 /var/www/html
</pre>
 
で、変更できる。
 
<code> chown </code> とは所有者(オーナー owner)を変更(チェンジ change)しろ、という命令である。
 
 
さらに、保存先となるファイルを、あらかじめ作成しておいて、ドキュメントルートにアップロードしないといけない(そうしないと、apache上でのPHPでは、なぜかファイル書き込みをしてくれない)。
 
もし、たとえば「saveData.txt」みたいなファイルを、あらかじめ作成しておいて、それをドキュメントルートにコピーするのである。
 
つまり
<pre>
$ sudo cp saveData.txt /var/www/html
</pre>
 
のように、書き込まれるファイルを、ドキュメントルートにコピーして置いておく。
 
 
こうして、ようやく、ファイル書き込みをできる。
 
 
{{節stub}}
 
<syntaxhighlight lang="PHP">
<?php
echo "書き込みテスト<br />" ;
file_put_contents("saveData.txt", "Hello 書き込み"."\n", FILE_APPEND);
?>
</syntaxhighlight>
 
 
これをドキュメントルートにアップロードし、ブラウザ上で閲覧すると、ファイル「saveData.txt」に
Hello 書き込み
と、書き込まれているハズである。
 
なお、第三引数の <code>FILE_APPEND</code> は、書き込み時に、文章の最後に追記書き込みをするための命令。(これを使わないと、白紙から書き直してしまい、前の保存内容が消えてしまう。)
 
 
なお、改行文字を追加する場合には、<code>."\n"</code> のように追加する。
 
たとえば
と書き込みたいなら、
 
<syntaxhighlight lang="PHP">
<?php
echo "書き込みテスト<br />" ;
file_put_contents("saveData.txt", "た"."\n"."て"."\n"."よ"."\n"."み", FILE_APPEND);
?>
</syntaxhighlight>
 
をアップロードして、ブラウザ上から閲覧すれば、「saveData.txt」ファイルに、「たてよみ」と、1文字ずつ改行して、末尾のほうに書いてあるハズ。
 
 
<syntaxhighlight lang="PHP">