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
目录。