Laravel 5.6.5基础安装后Apache访问出现500错误求助
嘿,我来帮你捋捋这个Apache访问Laravel返回500错误的排查思路——毕竟你用php artisan serve能正常运行,说明代码本身(包括Socialite插件)没啥问题,问题大概率出在Apache的配置或者文件权限这块,咱们一步步来:
1. 先看Apache的错误日志(最关键!)
500是个笼统的服务器错误,必须先看具体的错误信息才能精准定位。Apache的错误日志位置根据系统不同有所区别:
- Ubuntu/Debian:
/var/log/apache2/error.log - CentOS/RHEL:
/var/log/httpd/error_log - Windows:Apache安装目录下的
logs/error.log
你可以用命令实时查看最新日志,比如Linux下执行:
tail -f /var/log/apache2/error.log
然后刷新浏览器访问你的站点,就能看到触发500错误的具体原因了——这一步能帮你跳过很多无用排查。
2. 验证虚拟主机(vhost)配置
你提到了vhost配置,这几个点一定要确认:
- 文档根目录必须指向Laravel的
public文件夹,绝对不能指向项目根目录!正确的配置示例:<VirtualHost *:80> ServerName laravel.test # 你本地访问的域名 DocumentRoot /var/www/your-laravel-project/public <Directory /var/www/your-laravel-project/public> AllowOverride All # 必须开启,让.htaccess生效 Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/laravel-error.log CustomLog ${APACHE_LOG_DIR}/laravel-access.log combined </VirtualHost> - 确保本地
hosts文件已经把你设置的ServerName映射到127.0.0.1:- Linux/macOS:编辑
/etc/hosts,添加127.0.0.1 laravel.test - Windows:编辑
C:\Windows\System32\drivers\etc\hosts,添加同样的内容
- Linux/macOS:编辑
- 配置修改后必须重启Apache:Linux下
sudo systemctl restart apache2,Windows在Apache服务管理器里重启。
3. 检查Laravel目录权限
Laravel需要对storage和bootstrap/cache目录有写入权限,Apache运行的用户(Linux下一般是www-data,CentOS是apache)必须能读写这两个目录:
- Linux/macOS执行以下命令:
sudo chown -R www-data:www-data /var/www/your-laravel-project/storage /var/www/your-laravel-project/bootstrap/cache sudo chmod -R 775 /var/www/your-laravel-project/storage /var/www/your-laravel-project/bootstrap/cache - Windows下右键这两个目录,给Apache的运行用户添加「写入」权限,或者暂时给Everyone添加写入权限测试(测试完成后记得改回来,保障安全)。
4. 核对.htaccess文件是否正确
Laravel的public目录下默认的.htaccess应该是这样的,你可以对比自己的文件是否有缺失或错误:
<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Send Requests To Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>
另外,要确保Apache开启了mod_rewrite模块:
- Linux下执行
sudo a2enmod rewrite,然后重启Apache - Windows下打开Apache的
httpd.conf,找到#LoadModule rewrite_module modules/mod_rewrite.so,去掉前面的#,重启Apache
5. 检查PHP版本和必要扩展
Laravel 5.6要求PHP版本至少是7.1.3,并且需要开启以下扩展:OpenSSL、PDO、Mbstring、Tokenizer、XML。
你可以在public目录下创建一个临时文件phpinfo.php,内容为:
<?php phpinfo(); ?>
访问这个文件查看PHP版本和扩展是否满足要求,如果版本不够或者扩展缺失,也会导致500错误。
按照这个顺序排查,应该很快就能找到问题啦!
内容的提问来源于stack exchange,提问作者Oskar Calvo
相关产品推荐
相关产品推荐

