【发布时间】:2017-09-10 08:42:44
【问题描述】:
我正在将文件从$source 复制到$destination。
如果我从 PowerShell 执行 copy($source, $destination),它会起作用。
如果我从 Apache 调用这个 copy($source, $destination),它会抱怨 copy(...): failed to open stream: Permission Denied.
我可以手动打开资源管理器并复制和粘贴文件。我在 Windows Server 2012R2 上使用 PHP 7.1、Apache 2.4。
为什么会这样?有人可以提供见解吗?
【问题讨论】:
-
你知道什么是权限吗?
-
如果你使用 power shell,php 使用你登录的同一个用户。 apache 使用不同的用户(通常是 www 或 www-data 之类的)
-
@u_mulder 目标文件夹的属性显示,所有用户都有“允许写入”。
-
@Jakumi,我使用的是 Windows Server 2012R2。
-
我相信 php/apache 配置有一些设置说明,执行 php 脚本时使用哪个用户。这可能与您的用户帐户有很大不同,即使在 Windows 上也是如此(而且非常应该,因为您可以做的比网络服务器应该做的要多得多)
标签: php apache powershell server