2023年11月24日にリリースされました。
またこれと同時に、PHP8.0がサポートから外れ、PHP8.1はセキュリティサポート、公式にはPHP8.2以上を利用することが推奨されることになります。
🥳 PHP 8.3 Released!
— php.net (@official_php) November 23, 2023
In this new release, we have:
⌨️ Typed Class Constants
🏛️ Dynamic Class Content Fetch
♻️ A New [#Override] Attribute
➕ …and more!
👓 Read all about it on: https://t.co/w5ziasljBK
🔗 https://t.co/lPQhZRU1qe
📦 https://t.co/VqsPMvqYvO
お急ぎの方はこちらのソースコードを最初にダウンロードください
とりあえずブログの記事はどっちでも良いからDocker環境を動作させたいという方はgitHubへ直接ソースコードをダウンロードください。
移行前にDocker環境でソースコードを確認
PHP8.3にアップデートする前に、事前に問題がないか確認するにはDockerなどで環境を構築して事前確認を行いましょう。
プロジェクトのフォルダ構成
- php
- Dockerfile
- mysql
- db --> ビルド後にMysql関連のファイルが生成される
- seed --> 初期設定時に挿入されるデータ
- docker-compose.yml
- ports.conf
- index.php
docker-compose.yml
version: '3.8'
services:
#MySQL用コンテナ
db:
container_name: mysql_latest
image: mysql/mysql-server:latest
restart: always
volumes:
- ./mysql/seed:/docker-entrypoint-initdb.d # 初回データ実行
- ./mysql/db:/var/lib/mysql # データ永続化
ports:
- 3306:3306
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_USER=test
- MYSQL_PASSWORD=test
- MYSQL_DATABASE=test
#phpMyAdmin用コンテナ
phpmyadmin:
container_name: phpMyAdmin_v2
image: phpmyadmin/phpmyadmin
environment:
PMA_HOST: db #mysqlのサービス名
PMA_USER: test #phpmyadminにログインするユーザ
PMA_PASSWORD: test #phpmyadminにログインするユーザのパスワード
restart: always
ports:
- "80:80"
depends_on:
- db
#php用コンテナ
web_v2:
container_name: web_v2
build: ./php
volumes:
# FRONTEND
- ./index.php:/var/www/html/index.php
- ./ports.conf:/etc/apache2/ports.conf
ports:
- "8080:8080"
depends_on:
- db
ports.confファイル
今回はPHP8.3プロジェクトをポート8080で動作させます。
そのため、ポート8080でサイトを公開するためにこの定義ファイルを更新しています。
Listen 8080 ← ここを変更する
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
デフォルト設定では、ポート80をリッスンするように設定されていますが、ポート80はphpMyAdminで利用するため変更しております。
ドキュメントルート(DocumentRoot)
本、docker環境はDocumentRootとしてvar/www/html
が指定されています。
※Apacheの初期設定?
DocumentRootの確認には下記のコマンドで確認が可能です。
## dockerコンテナ内に入る
docker exec -it <your-container-name> bash
## DocumentRootを確認する
cat /etc/apache2/sites-available/000-default.conf
実際のプロジェクトの用に実行させるのであればドキュメントルートを変更したいケースもあると思います。
その場合はこのプロジェクトに000-default.conf
を追加して、000-default.conf
ファイルをetc/apache2/sites-available.conf
にvolumesでマウントされるように設定しましょう。