读取networking驱动器上的文件

我正在Windows Server上运行Xampp; Apache以本地帐户的身份运行。 在此服务器上,networking共享被挂载为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 …和代码工作。

我看不出是什么原因造成了服务和应用程序之间的差异,以及如何使其工作。

您无法使用驱动器号来执行此操作,因为networking映射驱动器仅适用于单个用户,因此无法由服务使用(即使您要为该用户安装该驱动器)。

你可以做的是直接使用UNCpath,例如:

 fopen('\\\\server\\share\\text.txt', 'r'); 

但请注意,对于UNCpath的PHP文件系统访问,存在一些问题。 一个例子是我为imagettftext提交的错误 ,但是file_existsis_writeable也有问题。 我没有报道imagettftext ,因为正如你可以从imagettftext长期出色的bug中看到的,有什么意义。

对于networking共享,您应该使用UNC名称:“//server/share/dir/file.ext”

如果你使用IP或主机名,它应该可以正常工作:

 $isFolder = is_dir("\\\\NAS\\Main Disk"); var_dump($isFolder); //TRUE $isFolder = is_dir("//NAS/Main Disk"); var_dump($isFolder); //TRUE $isFolder = is_dir("N:/Main Disk"); var_dump($isFolder); //FALSE