0

我有一个 PHP 网站,其后端批处理/CRON 作业经常运行并处理照片。Web 和数据库服务器以及 RAID 存储是 Fedora 14 盒子,照片软件在存储服务器上的 Windows 7 VirtualBox 中运行。

存储阵列作为共享文件夹加载,并在网络位置下显示为 E:\。

PHP exec 命令通过 PHP-CLI 每分钟运行一次,如下所示:

exec("C:\\service\\photo_edit.exe --input-file E:\\photos\\photo_example.jpg --effect crossprocess --output-file E:\\photos\\user\\finished_example.jpg")

直接在命令行中运行命令有效。问题是,PHP 似乎根本无法使用 E:\,即使我可以通过命令提示符访问它。我还必须将 Windows 保留在 VirtualBox 中,因为我有更多的服务可以编辑文件并在 Linux 中运行。

我需要 PHP 才能在 Windows 内的 Web 存储上处理这些文件。

4

2 回答 2

1

这不是权限问题。映射到驱动器号的网络共享是每个用户的设置。Apache 运行的用户没有将该共享映射为E:.

替代方案包括:

  1. 使用 UNC 语法:\\vboxsvr\whatever
  2. 映射当前 Apache 用户的驱动器 (LOCAL_SYSTEM?) —似乎不可能
  3. 更改 Apache 服务运行的用户
于 2013-02-05T15:32:24.860 回答
0

PHP是否有访问权限E:\?请记住,当您运行命令时,您可能是管理员。另一方面,PHP 可能以较低的权限运行。

于 2013-02-05T15:28:48.127 回答