php - 在 Digital Ocean Ubuntu 上设置 Laravel 5.1

标签 php mysql apache laravel ubuntu

我正在关注 this guide关于设置 Laravel 5.1在用于 Digital Ocean 的 Ubuntu(LAMP 堆栈)上。当我尝试通过一键式 Droplet 访问我的 Laravel 应用程序时,我得到:

enter image description here

我完成了安装 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 enter image description here

然后重启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”的权限问题,可能有多种原因:

  1. 您尚未授予对您的存储或 Bootstrap /缓存目录的写入权限。试试看。

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

    您需要成为 root 用户才能使用 chmod

  2. 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/

相关文章:

php - PHP 中的简单寻路

mysql - 将值从一个字段拆分为两个

apache - 提高 Web 应用程序的性能

apache - 在 vhost 文件中使用符号链接(symbolic link)

PHP/IIS - Sessions_save_path - 已创建 session 数据但发生错误且无法完成安装

php - PHP 项目的文件夹结构

php braintree 集成

mysql - 获得主题帖+便签页的最佳方式是什么?

没有数据库名称的mysqldump

apache - 如何获取htaccess中的子域名和域名