4

我有一个简单的脚本,它将文件从一个 SMB 挂载复制到另一个。源文件系统相同,但 Web 服务器不同。我正在使用 PHP 通过将文件复制到临时目录来处理文件,然后对其执行其他任务。此设置在某个时间点有效,但似乎不再正常工作。有人可以指出我正确的方向吗?

fstab 挂载

//192.168.0.x/share /media/folder smbfs username=user,password=mypass
//192.168.0.x/share2 /media/folder2 smbfs username=user,password=mypass

php代码

copy('/media/folder/filename.txt','/media/folder2/temp/filename.txt');

错误

Warning: copy(/media/folder2/temp/filename.txt): failed to open stream: Permission denied in /www/myphp.php on line xx

文件夹权限(不是挂载,而是文件服务器上的源文件夹):

/media/folder = 777 
/media/folder2/temp = 777
4

3 回答 3

1
system("cp /media/folder/filename.txt /media/folder2/temp/filename.txt");

可能对你有用。

于 2011-07-10T17:07:22.587 回答
0

听起来像是一个特定于权限和操作系统而不是 PHP 的问题 .. 什么网络服务器?服务器以什么方式运行?没人:没人?nobody:nobody 或 www-root:www-root 可以将数据读/写到您尝试访问的目录中吗?

sudo su - nobody

  • 可能不会工作,因为它很可能有一个/bin/false外壳
  • 没有人可能不是正确的帐户..ps auxw | grep apache | awk {'print $1'}并查看它以哪个用户身份运行...然后尝试切换到该帐户sudo

在 PHP 可以访问写入文件之前,您需要确保运行 Web 服务器的用户...有权读取/写入您正在尝试的目录copy

于 2011-07-10T05:41:49.353 回答
0

我将命令更改为:

copy('/media/folder/filename.txt','/tmp/filename.txt');

显然,处理 SMB 共享上的文件比我想象的要困难得多。该文件应在计算机重新启动时删除,或者可能定期删除,具体取决于系统设置。

于 2011-07-10T17:03:24.903 回答