我在 Windows 服务器上运行 Xampp; Apache 使用本地帐户作为服务运行。在此服务器上,网络共享挂载为 X:,具有特定凭据。
我想访问位于 X: 的文件并运行以下代码
<?php
echo shell_exec("whoami");
fopen('X:\\text.txt',"r");
?>
并得到
theservername\thelocaluser
Warning: fopen(X:\text.txt) [function.fopen]: failed to open stream: No such file or directory
我尝试运行 Apache,不是作为一项服务,而是直接通过启动 httpd.exe 来运行……并且代码有效。
我看不出是什么导致了服务和应用程序之间的差异以及如何使其工作。
原文由 user1985014 发布,翻译遵循 CC BY-SA 4.0 许可协议
您无法使用驱动器号执行此操作,因为网络映射驱动器仅供单个用户使用,因此服务不能使用(即使您要为该用户安装它)。
您可以做的是直接使用 UNC 路径,例如:
但是请注意,PHP 对 UNC 路径的文件系统访问存在一些问题。一个例子是 我为 imagettftext 提交的错误,但
file_exists
和is_writeable
也存在问题。我没有报告后者,因为正如您从我的imagettftext
的长期未解决错误中看到的那样,有什么意义。