我正在关注 this guide关于设置 Laravel 5.1在用于 Digital Ocean 的 Ubuntu(LAMP 堆栈)上。当我尝试通过一键式 Droplet 访问我的 Laravel 应用程序时,我得到:
我完成了安装 Composer 和 Laravel 的步骤,然后将 ~/.composer/vendor/bin
目录放在我的 PATH 中“这样 laravel 可执行文件就可以被你的系统定位。”
root@phpmyadmin-512mb-nyc3-01:/# cat ~/.bashrc
:
echo 'export PATH="$PATH:$HOME/.composer/vendor/bin"' >> ~/.bashrc
export PATH="$PATH:$HOME/.composer/vendor/bin"
然后关注this guide关于更改我的 webroot,以便我可以像 Laravel 期望的那样从 /public
提供服务:
nano/etc/apache2/sites-enabled/000-default.conf
我将 DocumentRoot/var/www/html/
更改为 DocumentRoot/var/www/html/public
然后重启sudo systemctl restart apache2
我无法访问我的 Laravel 应用程序。它给出了一个 500
错误。这是为什么?
PHP Fatal error: Uncaught UnexpectedValueException: The stream or file "/var/www/html/storage/logs/laravel-2017-05-17.log" could not be opened: failed to open stream: Permission denied in /var/www/html/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:107\nStack trace:\n#0 /var/www/html/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php(106): Monolog\Handler\StreamHandler->write(Array)\n#1 /var/www/html/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(37): Monolog\Handler\RotatingFileHandler->write(Array)\n#2 /var/www/html/vendor/monolog/monolog/src/Monolog/Logger.php(336): Monolog\Handler\AbstractProcessingHandler->handle(Array)\n#3 /var/www/html/vendor/monolog/monolog/src/Monolog/Logger.php(615): Monolog\Logger->addRecord(400, Object(UnexpectedValueException), Array)\n#4 /var/www/html/vendor/laravel/framework/src/Illuminate/Log/Writer.php(202): Monolog\Logger->error(Object(UnexpectedValueException), Array)\n#5 /var/www/html/vendor/laravel/framework/src/Illuminate/Log/Writer.php(11 in /var/www/html/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php on line 107
最佳答案
您是否可以访问apache 的错误日志? (或者,如果您已经定义了一个自定义日志文件,那么就在那里 checkin )。 500 错误通常会在 apache 日志文件 (/var/log/apache2/error.log) 或您的自定义错误日志中留下一个条目。
如果错误是写入“laravel.log”的权限问题,可能有多种原因:
您尚未授予对您的存储或 Bootstrap /缓存目录的写入权限。试试看。
cd /var/www/html/<projectname> chmod +777 -R storage chmod +777 -R bootstrap/cache
您需要成为 root 用户才能使用 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 的使用,并告诉您将其整体关闭,但不建议这样做。
关于php - 在 Digital Ocean Ubuntu 上设置 Laravel 5.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44017461/