4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PHP8(PHP-FPM)のメモ

Last updated at Posted at 2020-11-27

環境

  • CentOS7
    (元々色々なバージョンを動かすのに使ってた)

epel, remi のリポジトリの追加は済んでる環境(下記)

yum -y install epel-release
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

PHP8と諸々インストール

yum -y install php80 php80-php php80-php-mbstring php80-php-pdo php80-php-mysqlnd php80-php-gd php80-php-xml php80-php-fpm

設定

cd /etc/opt/remi/php80/php-fpm.d/
cp -a www.conf www.conf-original
vi www.conf
www.conf
listen = 127.0.0.1:9080
pm = ondemand

いろんなバージョンのPHPを動かしているのでポートはそれぞれ被らないように設定

vi /etc/httpd/conf.d/virtualhost.conf
virtualhost.conf
        <Directory "/path/to/php80/document_root">
                <FilesMatch \.php$>
                        SetHandler "proxy:fcgi://localhost:9080"  # ← www.conf に指定したポート番号
                </FilesMatch>
        </Directory>

更新して起動する

service httpd configtest
systemctl start php80-php-fpm
systemctl status php80-php-fpm
systemctl enable php80-php-fpm
systemctl restart httpd

おわり。

Apacheのデフォルトで使用されるバージョンを変える

正解かどうかわからないけど、
PHPのバージョンごとにあるApacheのモジュールを無効化すればOK。

リネームなり削除して読み込まれるモジュールを変える。
なお、複数生きている場合はファイル名昇順で先に来るものが当たる(たぶん)
※ パッケージ更新すると復活するかも…

cd /etc/httpd/conf.modules.d
mv 15-php72-php.conf 15-php72-php.conf_bak
systemctl restart httpd

PHP7のソースをPHP8で動かしてみて引っかかったところと変更内容

自動DI で使ってたリフレクションの一部がコケた

// ↓ NGになった
$tempReflectionClass = $reflectionParameter->getClass();

// ↓ OK
$type = $reflectionParameter->getType();
$tempReflectionClass = $type !== null && !$type->isBuiltin() 
   ? new \ReflectionClass($type->getName())
   : null
;

is_callable を静的でないクラスメソッドに対して
クラス名とメソッド名で読んでいたのがNGになった。

// ↓ NGになった
is_callable([クラス名, 静的でないメソッド名]);

// ↓ OK
is_callable([インスタンス, 静的でないメソッド名]);
4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?