2018年01月10日
fedora27で動かなくなったphpを直した
こないだfedora27にバージョンアップしたのですが、いつのまにか自分で作ったPHPスクリプトが動かなくなっていました。PHPもPHP5からPHP7にバージョンアップしていましたが、ややこしい関数やライブラリは使用していませんので、PHPバージョンに依存するエラーではなさそうです。おそらく、動作環境が変わったことが理由でPHPスクリプトが動かなくなったのだろう考えました。
エラーログを調べてみると、fopenに失敗していました。ファイルの書き込みをしようとして失敗しています。
PHPにもいくつか種類があるのですが、わたしが使用していたのはsuPHP(mod_suphp)です。apache内蔵のPHPだとapacheユーザーでPHPスクリプトを実行するので、PHPスクリプトで作成したファイルがapacheユーザー権限になって削除が超面倒です。suPHPならフォルダのオーナー権限でPHPスクリプトを実行するので、PHPスクリプトで作成したファイルもオーナー権限になって楽だからです。
いろいろと設定ファイルを調べたところ、PHPスクリプトが動かなくなったのはくだらない理由でした。
(1) PHPをcgiモードで動かそうとしてphp-fpmをインストール
(2) suPHPをのほうが楽だと気づき、suPHPをインストール
(3) PHPスクリプトをsuPHPで実行させるため、php-fpmを一時的に機能停止するよう以下のように設定ファイルをリネーム
mv /etc/httpd/conf.d/php.conf /etc/httpd/conf.d/php.conf.org
mv /etc/httpd/conf.modules.d/10-php.conf /etc/httpd/conf.modules.d/10-php.conf.org
(4) php-fpmとsuPHPは両方とも動いているが、php-fpmは設定ファイルがないのでPHPスクリプトはsuPHPが実行
(5) アップデートの拍子に php.conf と 15-php.conf がインストールされて復活
(6) 設定ファイルが復活したのでPHPスクリプトをphp-fpmが実行
(7) php-fpmはapacheユーザー権限で動くので、ファイルの書き込み権限でエラー
使用しないphp-fpmをアンインストールしなかったのが原因です。
systemctl stop php-fpm
systemctl disable php-fpm
dnf remove php-fpm
これで設定ファイルが復活することもないでしょう。
ホッとしましたが、バカバカしい話でした。
ブログ一覧 |
パソコン | 日記
Posted at
2018/01/10 21:37:42
今、あなたにおすすめ