PHP在映射的驱动器目录中创建文件
Posted
技术标签:
【中文标题】PHP在映射的驱动器目录中创建文件【英文标题】:PHP create file in mapped drive directory 【发布时间】:2021-08-25 05:48:07 【问题描述】:尝试在映射驱动器 (Z:) 中的文件夹中创建文件
我使用的源码如下:
$fileNumber = 'F2310XXXX';
$content = "; Test \n; Date : ".date('d/m/Y H:i:s')."\n; Filename : ".$fileNumber.".TXT";
$fp = fopen("//xx.xx.xxx.xxx/MC/".$fileNumber.".TXT","wb");
fwrite($fp,$content);
fclose($fp);
出现以下错误:
A php Error was encountered
Severity: Warning.
Message: fopen(//xx.xx.xxx.xxx/MC/F2310XXXX.TXT): failed to open stream: Permission denied
Filename: controllers/Auth.php
Line Number: 76
Backtrace:
File: C:\wamp64\www\mc-app\admin\application\controllers\Auth.php
Line: 76
Function: fopen
File: C:\wamp64\www\mc-app\admin\index.php
Line: 315
Function: require_once
请有人帮忙解决这个问题,因为我尝试了几乎所有从谷歌得到的解决方案,但没有运气。您的所有帮助将不胜感激。提前致谢
【问题讨论】:
我要提到映射驱动器是每个用户的,但后来注意到这里唯一提到的Z:
是在问题本身,而不是在你的代码中:-?
@ÁlvaroGonzález 而不是Z:
我使用相同的服务器地址。
确保运行 Apache 的用户有权访问该共享。
@MagnusEriksson 是的 Apache 以管理员身份运行
【参考方案1】:
如果你知道驱动器号为什么不指定它?
$fp = fopen("Z:/MC/".$fileNumber.".TXT","wb");
没有它,您将尝试在位于驱动器的默认脚本上打开该文件。
xx.xx.xxx.xxx 是 IP 地址吗?
这个问题几乎肯定是权限问题。
【讨论】:
因为我猜xx.xx.xxx.xxx
表示共享的IP,所以它应该是Z:
或/xx.xx.xxx.xxx/
,而不是两者。无论如何,它可能并不那么简单,因为 PHP 应用程序通过 Apache 运行(基于他们的标签),它将在另一个可能没有映射该驱动器的用户上运行。
感谢您的回答.. 即使我保留了驱动器号,它也不起作用。而 xx.xx.xxx.xxx 是机器的 IP 地址。
@MagnusEriksson 是的,正确.. 那么我们该如何解决这个问题呢?
我认为这是在 Windows 子系统上运行的。只要用户对 Z: 上的该文件夹具有写入权限,使用 Z:/MC/... 就可以工作。
@GuySchwartz 我尝试在 MC 中手动创建文件,并且它可以正常工作。所以我认为用户有权访问该文件夹。以上是关于PHP在映射的驱动器目录中创建文件的主要内容,如果未能解决你的问题,请参考以下文章