在 CentOS 上“跑不动 Laravel”通常不是系统本身的问题,而是环境配置、版本兼容性或资源限制导致的。下面按最常见原因给你梳理一下,基本能对号入座。
Laravel 对 PHP 版本要求很严格:
| Laravel 版本 | 最低 PHP 版本 |
|---|---|
| Laravel 8 | PHP 7.3+ |
| Laravel 9 | PHP 8.0+ |
| Laravel 10 | PHP 8.1+ |
| Laravel 11 | PHP 8.2+ |
✅ 解决:
# 使用 remi 源
yum install -y epel-release
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php82
yum install php php-cli php-fpm php-mbstring php-xml php-json php-zip
Laravel 必装扩展:
mbstring
xml
ctype
json
tokenizer
openssl
pdo
以及(常用):
zip
gd
bcmath
检查:
php -m
Laravel 必须用 Composer:
php -v
composer -V
安装:
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
CentOS 默认开启 SELinux,经常导致:
临时关闭测试:
setenforce 0
✅ 正确做法(推荐):
chcon -R -t httpd_sys_rw_content_t storage
chcon -R -t httpd_sys_rw_content_t bootstrap/cache
chmod -R 755 storage
chmod -R 755 bootstrap/cache
chown -R nginx:nginx .
location / {
try_files $uri $uri/ /index.php?$query_string;
}
public 外层index.phpComposer 安装 Laravel 很容易 OOM:
free -h
解决:
composer install --no-scripts --prefer-dist
# 或
php -d memory_limit=-1 composer install
⚠️ 注意:
新项目更推荐:
你可以一行一行确认:
php -v
composer -V
php -m | grep -E 'mbstring|xml|openssl'
systemctl status php-fpm
systemctl status nginx
ls -ld storage
如果你愿意,可以告诉我:
我可以直接帮你精确到“哪一行配置错了”。