file_get_contents() "failed to open stream: Permission denied" 在 Apache 服务器中
file_get_contents() "failed to open stream: Permission denied" in Apache server
我正在尝试读取我可以访问但 php 无权访问的共享网络文件夹中的文件。
共享文件夹 "xtern" 位于计算机 "saturn" 上,文件名为 "seq_ws.csv"。
这是我的代码:
<?php
$fileURL = "\saturn\xtern\seq_ws.csv";
$fileAvailable = file_exists($fileURL);
if($fileAvailable){
echo "Succes";
}else{
echo "fail";
echo file_get_contents($fileURL);
}
?>
结果如下;
fail
Warning: file_get_contents(\saturn\xtern\seq_ws.csv): failed to open stream: No such file or directory in C:\Apache24\htdocs\file.php on line 9
奇怪的是我可以在浏览器和 windows 资源管理器中打开路径并读取文件。共享文件夹拥有我 运行 Apache 用户的所有权限以及 "Everyone".
的所有权限
我已尝试研究此问题,但未能找到任何解决方案。我检查了 php.ini
并且 allow_url_fopen
设置为 On
。我很确定这是 Apache 中的一个设置,PHP 或某处的共享文件夹,因为我可以按照前面所述读取文件,但不能使用我的 PHP 脚本。
如果有人有任何信息或建议,我们将不胜感激,
提前致谢。
在对这个问题进行了更多的搜索之后,我终于找到了答案,UNC 路径的问题是 Apache 服务无法默认进入共享文件夹(可能是一个错误),这是服务设置方式的原因向上。要解决此问题,您必须 link Apache 到用户配置文件,我不知道这是否只是 Windows.
中的问题
要修复 Apache 无法访问共享文件夹的问题:
- 前往 Windows
services.msc
中的本地服务
- 右键单击 Apache 服务和 select 属性。
- 单击 "Log on" 选项卡
- 将 "Log on as:" 设置从
Local System account
更改为 This account
并填写帐户名和密码
如果您不想使用与 Localhost
相同的帐户来连接到共享文件夹,只需将名称和密码复制到文本框中即可。
我希望这能帮助遇到与我相同问题的其他人。在研究这个时,我发现很多人都这样做了,而且很多不同 comments/answers 但没有任何效果。
我正在尝试读取我可以访问但 php 无权访问的共享网络文件夹中的文件。
共享文件夹 "xtern" 位于计算机 "saturn" 上,文件名为 "seq_ws.csv"。
这是我的代码:
<?php
$fileURL = "\saturn\xtern\seq_ws.csv";
$fileAvailable = file_exists($fileURL);
if($fileAvailable){
echo "Succes";
}else{
echo "fail";
echo file_get_contents($fileURL);
}
?>
结果如下;
fail
Warning: file_get_contents(\saturn\xtern\seq_ws.csv): failed to open stream: No such file or directory in C:\Apache24\htdocs\file.php on line 9
奇怪的是我可以在浏览器和 windows 资源管理器中打开路径并读取文件。共享文件夹拥有我 运行 Apache 用户的所有权限以及 "Everyone".
的所有权限我已尝试研究此问题,但未能找到任何解决方案。我检查了 php.ini
并且 allow_url_fopen
设置为 On
。我很确定这是 Apache 中的一个设置,PHP 或某处的共享文件夹,因为我可以按照前面所述读取文件,但不能使用我的 PHP 脚本。
如果有人有任何信息或建议,我们将不胜感激,
提前致谢。
在对这个问题进行了更多的搜索之后,我终于找到了答案,UNC 路径的问题是 Apache 服务无法默认进入共享文件夹(可能是一个错误),这是服务设置方式的原因向上。要解决此问题,您必须 link Apache 到用户配置文件,我不知道这是否只是 Windows.
中的问题要修复 Apache 无法访问共享文件夹的问题:
- 前往 Windows
services.msc
中的本地服务
- 右键单击 Apache 服务和 select 属性。
- 单击 "Log on" 选项卡
- 将 "Log on as:" 设置从
Local System account
更改为This account
并填写帐户名和密码
如果您不想使用与 Localhost
相同的帐户来连接到共享文件夹,只需将名称和密码复制到文本框中即可。
我希望这能帮助遇到与我相同问题的其他人。在研究这个时,我发现很多人都这样做了,而且很多不同 comments/answers 但没有任何效果。