Fedora Tips | Web 開発
なんてページを作ったのだから超久々に PHP をやろうと思う。
だってプログラミングといいながらインストールして設定してハローワールドするだけじゃまるでサルブンツみたいじゃん、やだー。
というか筆者の知識は PHP 5、それも一部分で止まっているままだったりする。
本サイトも全部 PHP だけど 5 でも 7 でも動く標準関数しか使っていないかったり。
fstring(Python3) やアロー関数(js)をガッツリ使っているのにコレじゃいかん。
基本から PHP を勉強やりなおし、いきなり詰まった。
SELinux で。
write.txt には 666 のパーミッションを付けてね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!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 が楽しい。