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 无法访问共享文件夹的问题:

  1. 前往 Windows services.msc
  2. 中的本地服务
  3. 右键单击 Apache 服务和 select 属性。
  4. 单击 "Log on" 选项卡
  5. 将 "Log on as:" 设置从 Local System account 更改为 This account 并填写帐户名和密码

如果您不想使用与 Localhost 相同的帐户来连接到共享文件夹,只需将名称和密码复制到文本框中即可。

我希望这能帮助遇到与我相同问题的其他人。在研究这个时,我发现很多人都这样做了,而且很多不同 comments/answers 但没有任何效果。