在 Ubuntu 上“PHP 迁移”通常有以下几种常见场景,我先按最常见的几种给你说明,你可以对照自己的情况选:
php -v
sudo apt update
sudo apt install php8.1 php8.1-cli php8.1-fpm
sudo apt install php8.1-mysql php8.1-curl php8.1-gd php8.1-mbstring php8.1-xml
sudo update-alternatives --set php /usr/bin/php8.1
sudo a2dismod php7.4
sudo a2enmod php8.1
sudo systemctl restart apache2
修改 www.conf 指向新 PHP:
sudo nano /etc/nginx/sites-enabled/default
确认:
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
sudo systemctl restart nginx php8.1-fpm
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.2 php8.2-fpm
/etc/php/7.4/ → /etc/php/8.2/
手动对比:
php.iniwww.confpool.d⚠️ 注意:PHP 8.x 对语法更严格,老代码可能报错
tar -czvf project.tar.gz /var/www/html/project
mysqldump -u root -p dbname > db.sql
sudo apt install php8.2 nginx mysql-server
cp -r project /var/www/html/
mysql dbname < db.sql
chown -R www-data:www-data /var/www/html/project
chmod -R 755 /var/www/html/project
FROM php:8.2-fpm
RUN docker-php-ext-install pdo_mysql
迁移只需:
docker compose up -d
✅ short_open_tag 已不推荐
✅ mysql_* 函数已移除
✅ count() 不能用于 null
✅ 扩展名变化(如 php7.4-xdebug → php8.2-xdebug)
如果你能告诉我:
我可以直接给你精确的一步到位命令。