我正在关注在Ubuntu(LAMP stack)上为数字海洋设置this guide。当我试图在一键式水滴上访问我的Laravel应用程序时,我得到:
Laravel 5.1
我完成了安装Composer然后安装Laravel的步骤,然后将~/.composer/vendor/bin目录放在我的路径中“这样Laravel可执行文件就可以由您的系统定位”
root@phpmyadmin-512mb-nyc3-01:/# cat ~/.bashrc

   echo 'export PATH="$PATH:$HOME/.composer/vendor/bin"' >> ~/.bashrc
   export PATH="$PATH:$HOME/.composer/vendor/bin"

然后按照php - 在Digital Ocean Ubuntu上设置Laravel 5.1-LMLPHP更改我的webroot以便我可以从/public开始服务,就像拉维尔期望的那样:
nano /etc/apache2/sites-enabled/000-default.conf
我将DocumentRoot /var/www/html/更改为DocumentRoot /var/www/html/publicthis guide
然后重新启动sudo systemctl restart apache2
我无法访问我的Laravel应用程序。它给出一个500错误。这是为什么?
PHP致命错误:Uncaught UnexpectedValueException:流或
文件“/var/www/html/storage/logs/laravel-2017-05-17.log”无法
打开:无法打开流:中的权限被拒绝
/var/www/html/vendor/monog/monog/src/monog/Handler/StreamHandler.php:107\n堆栈
跟踪:\ n#0
/var/www/html/vendor/monog/monog/src/monog/Handler/RotatingFileHandler.php(106):
monog\Handler\StreamHandler->写入(数组)1
/var/www/html/vendor/monog/monog/src/monog/Handler/AbstractProcessingHandler.php(37):
monog\Handler\RotatingFileHandler->写入(数组)2
/var/www/html/vendor/monog/monog/src/monog/Logger.php(336):
monog\Handler\AbstractProcessingHandler->句柄(数组)3
/var/www/html/vendor/monog/monog/src/monog/Logger.php(615):
monog\Logger->addRecord(400,对象(UnexpectedValueException),
数组\n#4
/var/www/html/vendor/laravel/framework/src/Illuminate/Log/Writer.php(202):
monog\Logger->错误(对象(UnexpectedValueException),数组)
/var/www/html/vendor/laravel/framework/src/Illuminate/Log/Writer.php(11个
在里面
/var/www/html/vendor/monog/monog/src/monog/Handler/StreamHandler.php
在线107

最佳答案

你有权限访问apache的错误日志吗?(或者,如果您定义了自定义日志文件,请签入该文件)。500错误通常会在apache日志文件(/var/log/apache2/error.log)或自定义错误日志中留下一个条目。
如果错误是写入“laravel.log”时的权限问题,可能有多种原因:
您尚未授予对存储或引导/缓存目录的写入权限。试试看。

cd /var/www/html/<projectname>
chmod +777 -R storage
chmod +777 -R bootstrap/cache

要使用chmod,您必须是根用户
SELinux不允许http用户写入这些文件(例如,在CentOS上)。在应用程序的基本目录(包含“app”文件夹的目录,以及存储和引导文件夹)中使用以下命令:
chcon -R -t httpd_sys_rw_content_t storage
chcon -R -t httpd_sys_rw_content_t bootstrap/cache

如果它是SELinux,并且您的应用程序也计划连接到MySQL,那么您还需要运行:
setsebool -P httpd_can_network_connect_db 1

这是为了允许httpd连接到数据库。有些地方可能会试图劝阻使用SELinux,并告诉你关闭它作为一个整体,但这是不推荐的。

10-07 21:42