在 CentOS 上运行 Laravel 时,常见的坑和注意事项主要集中在 环境版本、权限、服务配置、性能与安全 这几块。下面按实战经验给你梳理一份“避坑清单”。
Laravel 对 PHP 版本有硬性要求:
| Laravel 版本 | 最低 PHP |
|---|---|
| Laravel 9 | PHP 8.0 |
| Laravel 10 | PHP 8.1 |
| Laravel 11 | PHP 8.2 |
✅ 建议:
yum install -y epel-release
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install -y php81 php81-php-fpm php81-php-mysqlnd php81-php-mbstring php81-php-xml php81-php-zip
Laravel 常用依赖:
php-mbstring
php-xml
php-curl
php-zip
php-gd
php-mysqlnd / php-pdo
php-bcmath
php-intl
php-openssl
检查:
php -m
Laravel 官方推荐 Nginx + PHP-FPM
关键点:
root 指向 public/location / {
try_files $uri $uri/ /index.php?$query_string;
}
chown -R nginx:nginx /var/www/laravel
chmod -R 755 /var/www/laravel
chmod -R 777 storage bootstrap/cache
⚠️ 生产环境不建议 777,可用:
chown -R nginx:nginx storage
Laravel 常因 SELinux 报 500
setenforce 0
setsebool -P httpd_read_user_content 1
setsebool -P httpd_can_network_connect 1
如用 write:
setsebool -P httpd_unified 1
php81 /usr/local/bin/composer install
php -d memory_limit=-1 composer install
php artisan queue:work
✅ 生产建议用:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/laravel/artisan queue:work
autostart=true
autorestart=true
user=nginx
crontab -e
* * * * * php /var/www/laravel/artisan schedule:run >> /dev/null 2>&1
✅ 开启 OPcache
✅ 关闭 debug(APP_DEBUG=false)
✅ 使用 .env 不提交到 git
✅ 日志定期清理
✅ 防火墙只开 80 / 443
| 现象 | 原因 |
|---|---|
| 500 白屏 | SELinux / 权限 |
| composer 报错 | PHP 版本低 |
| 路由 404 | Nginx rewrite |
| 队列不执行 | 没起 worker |
| 上传失败 | upload_max_filesize |
/var/www/laravel
├── app
├── bootstrap
├── public
├── storage
├── .env
如果你愿意,我可以:
你现在是 本机跑还是服务器?CentOS 几?Laravel 几?