1. 统一PHP版本与环境配置
Laravel对PHP版本有明确要求(如Laravel 8.x需PHP 7.3+,Laravel 10.x需PHP 8.1+),需先通过php -v确认当前版本是否符合项目需求。若版本过低,使用Linux包管理器升级(如Ubuntu的sudo apt install php8.1、CentOS的sudo yum install php81-php)。同时,安装Laravel必需的PHP扩展:mbstring(字符串处理)、openssl(加密)、pdo_mysql(MySQL数据库连接)、tokenizer(代码解析)、xml(XML处理)、zip(压缩)、gd(图像处理)、bcmath(数学运算)。可通过php -m检查扩展是否启用,未启用的扩展需修改php.ini(如取消对应行注释)或通过包管理器安装(如sudo apt install php-mbstring),修改后重启Web服务器(sudo systemctl restart apache2或sudo systemctl restart nginx)使配置生效。
2. 正确配置Web服务器(Nginx/Apache)
Laravel需将项目public目录设为Web根目录,以避免直接暴露敏感文件。
/etc/nginx/sites-available/your-project文件,添加以下内容(替换/path/to/your/laravel为项目路径):server {
listen 80;
server_name your_domain_or_ip;
root /path/to/your/laravel/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.php index.html index.htm;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 根据PHP版本调整
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
启用配置(sudo ln -s /etc/nginx/sites-available/your-project /etc/nginx/sites-enabled/)并重启Nginx(sudo systemctl restart nginx)。/etc/apache2/sites-available/your-project.conf文件,添加以下内容:<VirtualHost *:80>
ServerName your_domain_or_ip
DocumentRoot /path/to/your/laravel/public
<Directory /path/to/your/laravel/public>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
启用模块(sudo a2enmod rewrite)和站点(sudo a2ensite your-project.conf),重启Apache(sudo systemctl restart apache2)。3. 修复文件/目录权限问题
Laravel的storage(日志、缓存、上传文件)和bootstrap/cache(框架缓存)目录需要Web服务器用户(如www-data、nginx)的写权限。执行以下命令:
sudo chown -R www-data:www-data /path/to/your/laravel/storage /path/to/your/laravel/bootstrap/cache
sudo chmod -R 775 /path/to/your/laravel/storage /path/to/your/laravel/bootstrap/cache
若使用root用户创建项目,需避免直接赋予777权限(存在安全风险),优先使用www-data用户组。
4. 管理依赖与Composer版本
使用Composer管理PHP依赖,确保依赖库版本与Laravel兼容。进入项目目录,执行:
composer install # 安装项目依赖(首次部署)
composer update # 更新依赖至最新兼容版本(解决版本冲突)
若遇到依赖冲突,可通过composer.json文件指定版本(如"illuminate/support": "^9.0"),再运行composer update。全局安装Composer时,建议将其路径加入系统环境变量(sudo mv composer.phar /usr/local/bin/composer)。
5. 配置环境变量与密钥
复制.env.example文件生成.env(cp .env.example .env),修改以下关键配置:
DB_CONNECTION=mysql、DB_HOST=127.0.0.1、DB_PORT=3306、DB_DATABASE=your_db、DB_USERNAME=your_user、DB_PASSWORD=your_pass;APP_URL=http://your_domain_or_ip;php artisan key:generate(生成随机密钥,填充至APP_KEY字段)。php artisan config:clear)使更改生效。6. 运行数据库迁移与优化
若项目使用数据库(如MySQL),需创建数据库并运行迁移:
mysql -u root -p # 登录MySQL
CREATE DATABASE your_db; # 创建数据库
GRANT ALL PRIVILEGES ON your_db.* TO 'your_user'@'localhost' IDENTIFIED BY 'your_pass'; # 授权用户
FLUSH PRIVILEGES; # 刷新权限
exit
回到项目目录,执行迁移:
php artisan migrate # 运行未执行的迁移
可选优化:生成配置缓存(php artisan config:cache)和路由缓存(php artisan route:cache),提升应用性能(仅适用于生产环境)。
7. 解决特定命令或功能兼容性问题
Schema::after()方法已被移除,需修改迁移文件中的Blueprint::after()调用(如替换为Schema::table()内的其他兼容操作,或删除无用代码)。spatie/laravel-lang包(composer require spatie/laravel-lang --dev),发布语言包(php artisan vendor:publish --provider="Spatie\Lang\LangServiceProvider"),并将config/app.php中的locale设置为zh-CN,复制语言文件至resources/lang/zh-CN目录。