PHP的copy()在从Apache执行时失败,为什么?

时间:2017-09-10 08:42:45

标签: php apache powershell server

我正在将文件从EXPANDED FIELDS复制到$source

如果我从PowerShell执行$destination,它就可以。

如果我从Apache调用此copy($source, $destination),则会抱怨copy($source, $destination)

我可以手动打开资源管理器并复制和粘贴文件。我在Windows Server 2012R2上使用PHP 7.1,Apache 2.4。

为什么会这样?有人可以提供见解吗?

1 个答案:

答案 0 :(得分:1)

如果在Windows下运行,Apache已经具备了所需的所有权限,因为它在LocalSystem帐户下运行,该帐户对本地路径具有广泛的读/写访问权限。这是由PHP及其运行的脚本继承的。

如果有问题,那么 -

  • 之后设置的其他文件权限有问题(请检查Windows事件查看器)。
  • 配置编辑错误,例如:WP上传路径设置,php.ini临时文件夹位置+上传设置等。
  • Apache服务“登录”帐户已从“LocalSystem”更改为其他帐户(请查看服务的属性)。
  • 可能在VirtualHost或.htaccess中启用了PHP的open_basedir设置,并且限制了PHP可以访问的路径。
  • 或者存在内部PHP错误(请查看网站的HTTP和PHP错误日志)。

修改

由于它是建议的,如果你被困在第3点,我会添加这种解决方案的可能性:

  • 创建具有广泛文件权限的用户,并将Apaches服务更改为在该用户下运行。我强烈建议不要使用系统管理员用户(或任何管理员用户)配置文件。