はじめに
フィールドの追加をやりたかったわけですよ。そしたらこんなエラーが発生した。
結果
PHP7.4で動かさないといけないところをPHP8.0で動かしたのでエラーが出てた。
Laravel7と8が混在しているとちょっと面倒だな…
環境
- PHP 8.0.1
- Laravel Framework 7.28.4
- doctrine/dbal 2.11.3
% php -v
PHP 8.0.1
% php artisan --version
Laravel Framework 7.28.4
% composer show -i | grep dbal
doctrine/dbal 2.11.3
あれ?いつの間にPHP8になったんだろ…
エラーを検索してみる
ここ(https://github.com/doctrine/dbal/pull/3770)によると、解決している模様。
それなら、アップデートすれば行けそうだよね。
アップデートしてみる
とりあえず、composer update してみる。
% composer update
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
Problem 1
- laravel/socialite[v4.4.0, ..., v4.4.1] require php ^7.1.3 -> your php version (8.0.1) does not satisfy that requirement.
- Root composer.json requires laravel/socialite ^4.4 -> satisfiable by laravel/socialite[v4.4.0, v4.4.1].
これちょっと入り込むとヤバイやつかな…そもそも、WebサーバはPHPは7.4で動かしているわけだし…
PHPのバージョンを下げよう。
まずは、現状のバージョン
% brew list php
/usr/local/Cellar/php/8.0.1_1/.bottle/etc/ (4 files)
/usr/local/Cellar/php/8.0.1_1/.bottle/var/log/php-fpm.log
/usr/local/Cellar/php/8.0.1_1/bin/pear
/usr/local/Cellar/php/8.0.1_1/bin/peardev
/usr/local/Cellar/php/8.0.1_1/bin/pecl
/usr/local/Cellar/php/8.0.1_1/bin/phar
/usr/local/Cellar/php/8.0.1_1/bin/phar.phar
/usr/local/Cellar/php/8.0.1_1/bin/php
/usr/local/Cellar/php/8.0.1_1/bin/php-cgi
/usr/local/Cellar/php/8.0.1_1/bin/php-config
/usr/local/Cellar/php/8.0.1_1/bin/phpdbg
/usr/local/Cellar/php/8.0.1_1/bin/phpize
/usr/local/Cellar/php/8.0.1_1/homebrew.mxcl.php.plist
/usr/local/Cellar/php/8.0.1_1/include/php/ (294 files)
/usr/local/Cellar/php/8.0.1_1/lib/httpd/modules/libphp.so
/usr/local/Cellar/php/8.0.1_1/lib/php/ (15 files)
/usr/local/Cellar/php/8.0.1_1/pecl
/usr/local/Cellar/php/8.0.1_1/sbin/php-fpm
/usr/local/Cellar/php/8.0.1_1/share/man/ (8 files)
/usr/local/Cellar/php/8.0.1_1/share/php/ (159 files)
PHP7.4をインストールしてみる
% brew install php@7.4
<<< 省略 >>>
######################################################################## 100.0%
Error: Your Command Line Tools (CLT) does not support macOS 11.
It is either outdated or was modified.
Please update your Command Line Tools (CLT) or delete it if no updates are available.
Update them from Software Update in System Preferences or run:
softwareupdate --all --install --force
If that doesn't show you any updates, run:
sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install
Alternatively, manually download them from:
https://developer.apple.com/download/more/.
Error: An exception occurred within a child process:
SystemExit: exit
もうなんやねん。softwareupdateを実行しろと…
% softwareupdate --all --install --force
Software Update Tool
Finding available software
No updates are available.
ほう。更新が見つからないと…じゃあ次のやつやな。
sudo rm -rf /Library/Developer/CommandLineTools
Password:
% sudo xcode-select --install
xcode-select: note: install requested for command line developer tools
まぁまぁかかるねぇ…
インストールが終わったので、もっかいやってみる。
% brew install php@7.4
Warning: php@7.4 7.4.16 is already installed and up-to-date.
To reinstall 7.4.16, run:
brew reinstall php@7.4
% brew reinstall php@7.4
<<< 省略 >>>
To enable PHP in Apache add the following to httpd.conf and restart Apache:
LoadModule php7_module /usr/local/opt/php@7.4/lib/httpd/modules/libphp7.so
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
Finally, check DirectoryIndex includes index.php
DirectoryIndex index.php index.html
The php.ini and php-fpm.ini file can be found in:
/usr/local/etc/php/7.4/
php@7.4 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.
If you need to have php@7.4 first in your PATH, run:
echo 'export PATH="/usr/local/opt/php@7.4/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/usr/local/opt/php@7.4/sbin:$PATH"' >> ~/.zshrc
For compilers to find php@7.4 you may need to set:
export LDFLAGS="-L/usr/local/opt/php@7.4/lib"
export CPPFLAGS="-I/usr/local/opt/php@7.4/include"
To have launchd start php@7.4 now and restart at login:
brew services start php@7.4
Or, if you don't want/need a background service you can just run:
php-fpm
==> Summary
🍺 /usr/local/Cellar/php@7.4/7.4.16: 497 files, 72.4MB
とりあえず、パスを通す!
% echo 'export PATH="/usr/local/opt/php@7.4/bin:$PATH"' >> ~/.zshrc
% echo 'export PATH="/usr/local/opt/php@7.4/sbin:$PATH"' >> ~/.zshrc
ターミナルを再起動して、
% php -v
PHP 7.4.16
無事にPHP7.4環境で、タイトルのエラーはなくなりました。
PHP8に戻すときは、.zshrcの追加したものをコメントアウトして切り替える形にするしかないな。
コメント