【发布时间】:2015-04-08 03:30:37
【问题描述】:
我之前尝试搜索过这个问题,但似乎无处详细解释,主要是app/storage等问题没有设置权限,因此网络服务器可以写入文件,但我的问题似乎更大更重要的是,我希望有人能彻底解释这应该如何设置,最好不需要设置777的权限。
所以我的堆栈是 Ubuntu 14.04、PHP 5.6 和 PHP-FPM 因为我使用 nginx 1.4.6 我使用 Laravel 4.2 作为框架,另外一个我使用 Git 作为我的版本控制工具。那么,允许以下操作的必要步骤是什么:
-
设置初始项目,Git 和 Nginx:
据我所知,Nginx 设置为默认使用用户名
www-data对吗?这是否意味着我必须分配我的用户,例如kevin群www-data?当我初始化 git 时,使用 composer 创建项目,设置 SSH 公钥/私钥,我需要属于组www-data还是必须是sudo或什么?在我的生产服务器中,我尝试使用sudo来设置所有内容,它可以更轻松地完成上述所有操作,但这是最佳实践吗? -
使
app/storage对网络服务器可写:我认为这对 Laravel 来说是第二个也是最重要的,因为除非这样,否则 Laravel 将无法运行,我知道这个文件夹必须可由网络服务器 (nginx) 写入,所以我需要将其设置为
sudo chown -R www-data:www-data app/storage和sudo chmod -R 664 app/storage对吗?但不知何故,这似乎并不总是有效,因为在我的开发过程中,有时它会告诉不能将视图的缓存写入app/storage文件夹,所以最后我必须将其设置为777或775如果我幸运的话。 -
公共文件夹,或我的资产所在位置
这里我也有一些不一致,我在末尾设置了
777,以确保我所有的文件都可以被nginx访问。有时 nginx 会告诉我,我的资产文件夹中的某些图像似乎被禁止,如果我设置为777或将组更改为www-data:www-data,它只会返回 HTTP 200,我有吗更改我从 Gimp、Photoshop 创建的每张图片的权限或组,或者当我从 Dropbox 下载的图片或我的平面设计师设计新图标时从我的电子邮件中创建的图片? -
文件上传
所以在某个时候,人们将能够上传他们的个人资料图片,或者当我发布博客时我可以上传图片,这意味着文件上传脚本会在某个时候将文件从 @ 987654338@ 文件夹到我的
public文件夹,可能只需要写入public的子目录,或者有时可能需要基于某个id创建一个文件夹并将文件移动到目录中,大部分时间在执行脚本期间,我会收到一个错误,即目录似乎不可写或某些权限错误。这是否意味着 PHP 进程 也必须在某些权限下运行?或者这是否意味着该目录必须具有一定的权限?这个问题是与Nginx服务有关还是与PHP进程有关?我有使用
roumen/sitemap或jlapp/swaggervel等软件包的经验,他们似乎使用相同的 FacadeFile,但不知何故他们没有任何权限问题,我尝试复制他们的代码行为但我遇到了上面的问题。 -
队列、Artisan、其他基于命令行的执行脚本
最后,是基于命令行的执行脚本,它的行为是否与通过与网络服务器交互执行的脚本相同,例如上面的文件上传,还是我需要为其他不一致做准备?
谢谢,如果有人可以向我解释一下。我想如果我弄明白了,我会写一篇博客之类的,谢谢大家! :D
【问题讨论】:
-
哦,还有一件事,请不要 Homestead 回答-.-
标签: php ubuntu laravel nginx user-permissions