我们通过在每台 Windows 机器上的共享本地目录中编辑工作文件来开发基于 PHP 的 Web 应用程序。然后(linux)登台服务器安装我们的共享驱动器并在子域下为它们提供服务。例如 joe.work.com 将服务于 Joe 的工作目录。然后,我们通过编辑我们的主机文件以将子域指向登台服务器来访问我们自己的登台站点……所有这些都很好!
我们现在遇到的问题是 PHP 似乎无权将上传的文件从 tmp 目录移动到挂载目录(实际上是共享的 Windows 驱动器...?)内的目录。
windows机器上的工作目录设置为允许所有人rw,我尝试将777放在登台机器上的挂载目录上,但我仍然被拒绝权限。
比如说,共享驱动器\\joes_machine\joes_working_dir
在登台服务器上安装到/var/mnt/joe
. 文件上传需要移动到/images/common
.
尽管这个例子稍微有点笨拙,但我并没有在代码方面做任何花哨的事情:
$working_directory = '/var/mnt/joe';
$image_directory = '/images/common/';
$full_filename = $working_directory . $image_directory . $filename;
if(move_uploaded_file($_FILES['photo']['tmp_name'], $full_filename))
// do some other stuff
我的错误当然是:
Message: move_uploaded_file(/var/mnt/joe/images/common/resulting_filename.jpg):
failed to open stream: Permission denied
Message: move_uploaded_file(): Unable to move '/tmp/phpjsEfBc' to
'/var/mnt/joe/images/common/resulting_filename.jpg'
我对与通过网络安装的 Windows 共享驱动器有关的文件权限有什么不理解,而 PHP 需要写入它?我似乎找不到挂机!
一旦我们投入生产,我们将不会使用模式,但如果有一个简单的解决方案能够在我们当前的开发环境中继续,那将是理想的!