Fedora Tips | Web 開発
なんてページを作ったのだから超久々に PHP をやろうと思う。
だってプログラミングといいながらインストールして設定してハローワールドするだけじゃまるでサルブンツみたいじゃん、やだー。
というか筆者の知識は PHP 5、それも一部分で止まっているままだったりする。
本サイトも全部 PHP だけど 5 でも 7 でも動く標準関数しか使っていないかったり。
fstring(Python3) やアロー関数(js)をガッツリ使っているのにコレじゃいかん。
基本から PHP を勉強やりなおし、いきなり詰まった。
SELinux で。
write.txt には 666 のパーミッションを付けてね。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Write Test</title> </head> <body> <p> <?php file_put_contents("write.txt", "SUZUKI のバイクはカッコイイ<br />\n", FILE_APPEND); echo file_get_contents("write.txt"); ?> </p> </body> </html>
リロード毎に行が追記されるサンプル。
のはずなのに PHP でファイルへの書き込みできない!
SELinux にブロックされていると気がつくのに時間が掛かった。
ほわいとのホームサーバ:Fedora構築メモ
httpd 経由で書き込みを行う属性を付ける必要があるみたい。
Fedora 30 では以下でイケた。
# chcon -t 属性名 ファイル名 chcon -t httpd_sys_rw_content_t write.txt
しかもこの属性、Gedit で上書きとかすると消えちゃう。
面倒だと思ったと同時にサーバー用途と考えるとなるほどって感じ。
いやいや SELinux の勉強になった。
関係ないけど file_get_contents って GLib の関数と同じジャン!
echo は sh だし、Linux に慣れた人は多分 PHP が楽しい。