【发布时间】:2013-03-20 20:36:49
【问题描述】:
我们通过在每台 Windows 机器上的共享本地目录中编辑工作文件来开发基于 PHP 的 Web 应用程序。然后(linux)登台服务器安装我们的共享驱动器并在子域下为它们提供服务。例如。 joe.work.com 将服务于 Joe 的工作目录。然后,我们通过编辑 hosts 文件以将子域指向临时服务器来访问我们自己的临时站点……所有这些都非常有效!
我们现在遇到的问题是 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 需要写入它?我似乎找不到挂机!
一旦我们投入生产,我们将不会使用架构,但如果有一个简单的解决方案能够在我们当前的开发环境中继续,那将是理想的!
【问题讨论】:
标签: php linux windows sharing mount