在SilverStripe的管理后端上传文件时,我总是被拒绝许可。
apache2在www-data下运行:www-data(用" whoami"以及在envvars中检查)。
assets文件夹的权限如下:
drwxrwxr-x+ 5 git www-data 4.0K Oct 2 08:18 .
drwxrwsr-x+ 17 git users 4.0K Oct 2 09:53 ..
-rwxrwxr-x+ 1 git www-data 1.5K Oct 2 08:18 .htaccess
drwxrwsr-x+ 2 git www-data 4.0K Oct 2 07:28 Uploads
drwxrwsr-x+ 2 git www-data 4.0K Oct 2 08:18 _combinedfiles
drwxrwsr-x+ 2 git www-data 4.0K Oct 2 07:57 books
-rwxrwxr-x+ 1 git www-data 4.5K Oct 1 14:48 error-404.html
-rwxrwxr-x+ 1 git www-data 4.3K Oct 1 14:48 error-500.html
-rwxrwxr-x+ 1 git www-data 4.4K Oct 2 08:18 web.config
即使我将它们设置为777,我仍然会被拒绝。它在本地工作,我无法理解为什么它不起作用。
Apache ErrorLog:
[Fri Oct 02 10:24:18.364138 2015] [:error] [pid 16008] [client 62.218.34.90:44300] PHP Warning: copy(/var/www/X/assets/books/Mike.png): failed to open stream: Permission denied in /var/www/X/framework/filesystem/Upload.php on line 195, referer: http://x.amazonaws.com/index.php/admin/assets/add/?ID=7
[Fri Oct 02 10:24:18.364615 2015] [:error] [pid 16008] [client 62.218.34.90:44300] PHP Warning: Requirements_Backend::process_combined_files(): Couldn't create '/var/www/X/assets/_combinedfiles//lib.js' in /var/www/X/framework/view/Requirements.php on line 1214, referer: http://x.amazonaws.com/index.php/admin/assets/add/?ID=7
这是AWS特定的问题吗?有线索吗?
答案 0 :(得分:1)
问题是ACL。
使用getfacl ./assets/
我可以确定ACL被设置为破坏正常的权限模型。
使用setfacl
我能够推进ACL以将webuser(www-data)包含到assets
rwx
目录中。
希望这有助于某人, 最好的祝福。 ģ
答案 1 :(得分:0)
我建议您使用模块并将资产存储在S3中 https://github.com/markguinn/silverstripe-cloudassets