我有一个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存储上使用这些文件。
答案 0 :(得分:1)
这不是权限问题。映射到驱动器号的网络共享是每用户设置。 Apache运行的用户没有将该共享映射为E:
。
替代方案包括:
\\vboxsvr\whatever
答案 1 :(得分:0)
PHP是否有权访问E:\
?请记住,当您运行该命令时,您可能是一名管理员。另一方面,PHP可能以较低的权限运行。