EC2用户访问或文件访问问题?

时间:2016-07-21 06:54:29

标签: linux amazon-ec2 laravel-5

当我尝试调用CLI命令时,我在使用EC2实例时遇到了一些问题。我正在使用Laravel,但我不能确定它是Laravel问题还是EC2。

当我进入我的EC2实例时,我运行以下laravel命令来迁移我的数据库:

php artisan migrate

我收到以下错误:

  

PHP致命错误:未捕获的异常' UnexpectedValueException'同   消息'流或文件   " /var/app/current/storage/logs/laravel.log"不能打开:   未能打开流:权限被拒绝'在   /var/app/current/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:107

然后我运行sudo php artisan migrate并得到一个完全不同的错误:

  

[PDOException] SQLSTATE [HY000] [2002]没有这样的文件或目录

然后我再次运行php artisan migrate,这一切都按预期工作!

任何人都有任何想法导致这种行为或我如何找错?

注意:EC2是运行PHP 5.5的64位Amazon Linux 2016.03 v2.1.4

2 个答案:

答案 0 :(得分:3)

只需将bootstrap和storage的权限更改为777。

[ec2-user@ip-172-31-42-2 current]$ sudo chmod -R 777 storage
[ec2-user@ip-172-31-42-2 current]$ sudo  chmod -R 777 bootstrap

答案 1 :(得分:0)

这里被接受的答案会带来一些严重的安全风险-将chmod设置为777可使系统上的任何人读取,修改和执行这些目录中的任何内容。如果您的存储文件夹中包含上载内容,则该文件可能会特别具有破坏性。有关chmod 777不好的原因的更多详细信息,请参见this post

This post提供了更安全的解决方案,Laravel文档中也包含该解决方案。简短的版本是您应将Laravel文件夹的所有权授予Apache,然后将用户添加到Apache组(通常都是www-data

sudo chown -R www-data:www-data /path/to/your/project/vendor
sudo chown -R www-data:www-data /path/to/your/project/storage

然后

sudo usermod -a -G www-data your-user-name