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在映射的驱动器目录中创建文件的主要内容,如果未能解决你的问题,请参考以下文章

在单个命令行中创建文件以及嵌套目录

在php中创建一个CSV文件[关闭]

PHP在与脚本相同的目录中创建文件

如何使用python在Mac云驱动器中创建文件[关闭]

使用MyEclipse反向工程快速创建持久化类映射文件和Hibernate组件

无法写入文件 pri:无法在 QT mac os 中创建父目录