2014-11-22 155 views
1

我創建了一個Laravel應用程序並使用Elastic Beanstalk將其部署到EC2實例。一切似乎除了PHP來工作,所以我得到這個錯誤不能寫入storage目錄:Laravel和AWS Elastic Beanstalk - 文件權限

Error in exception handler: The stream or file "/var/app/current/site/app/storage/logs/laravel.log" 
could not be opened: failed to open stream: 
No such file or directory in /var/app/current/site/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:84 

這看起來像一個權限問題給我,所以我一直在使用的http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html指令設置嘗試權限。

我有一個文件01permissions.config.ebextensions目錄:

commands: 
    storage_permissions: 
    command: chmod -R 755 $EB_CONFIG_APP_ONDECK/site/app/storage 

我得到的服務器日誌以下錯誤:

[ERROR] Command storage_permissions (chmod -R 755 $EB_CONFIG_APP_ONDECK/site/app/storage) failed 
[DEBUG] Command storage_permissions output: chmod: cannot access ‘/site/app/storage’: No such file or directory 

任何想法是怎麼回事?

回答

1

問題是我忽略了日誌目錄,所以根本不在服務器上。這不是服務器無法寫入它,而是它不存在。

由彈性魔豆創建的實例的默認權限是:

文件664

迪爾775

他們部署和Apache的用戶擁有。

+0

你什麼意思,你忽視了日誌目錄?我有同樣的問題,但在項目中沒有.gitignore我忽略存儲目錄。它是否與每個文件夾中的所有.gitignore文件有關? (日誌,會話等) – 2015-03-26 18:38:01

+0

我想我在主目錄中忽略了.gitignore_global中的日誌。看看這個。如果沒有,請在日誌目錄中放置一個空的.gitignore文件,因爲Git不會跟蹤空目錄。 – Josh 2015-03-26 21:14:01

+1

謝謝@Josh。我們正在使用Jenkins來推動我們的構建,事實證明它正在刪除.gitignore文件(這些文件夾都在這些文件夾中),然後刪除文件夾,因爲它們是空的。我爲每個文件夾添加了一些虛擬文件,並立即修復了消失的文件夾問題。 – 2015-03-27 12:37:44

1

爲別人這個問題...這會工作:

container_commands: 
    01storage_permissions: 
    command: "chmod -fR 755 /var/app/ondeck/app/storage"