【问题标题】:Can't access file in home directory from PHP on a EC2 server无法从 EC2 服务器上的 PHP 访问主目录中的文件
【发布时间】:2015-07-10 12:43:15
【问题描述】:
我想知道为什么这会返回一个空字符串:
$settings = file_get_contents('/home/ec2-user/settings.json');
但这有效:
$settings = file_get_contents('/var/www/settings.json');
我似乎无法从主目录访问我的 json 文件。
有什么想法吗?
【问题讨论】:
标签:
php
amazon-web-services
amazon-ec2
home-directory
【解决方案1】:
通常,Web 服务器以自己的用户身份运行。该用户没有主目录(在 /home 中),并且不允许访问任何其他用户的主目录。
如果display_errors 已打开,您应该会看到使用file_get_contents 访问您无权访问的文件的警告。
【解决方案2】:
Apache 在www 用户下运行,其主文件夹设置为/var/www。而且由于 PHP 脚本在 Apache 的上下文中运行,它们也继承了它的用户。因此,您的脚本无法访问其他用户主文件夹中的文件。
如果您通过 CLI 运行相关代码(您通过 ssh 登录),您将能够访问 /home/ec2-user/settings.json 的内容,因为脚本将在您的用户上下文中运行。