文件上传有效,但无法将文件移动到另一个目录

时间:2013-05-03 13:17:40

标签: php apache file-upload permissions file-permissions

我的项目目录是/ public_html / test /

所有权和许可如下,

drwxrwsr-x 8 lamp apache 4096 Apr  8 10:46 public_html
drwxrwsr-x 6 lamp apache 4096 Apr  2 14:58 test

一个Web应用程序创建目录,上传一些文件,将文件从一个目录移动到目录/ public_html / test / files /

下的其他目录
drwxrwsr-x 21 lamp apache 4096 Apr 24 13:58 files

现在的问题是, 我使用Web应用程序创建了名为“mydirectory”的目录,它在/ public_html / test / files /下创建,如下所示,

drwxrwsrwx 2 apache apache   4096 Apr 15 13:56 mydirectory

然后我上传了一个文件说“myfile.jpg”,默认情况下上传到/ public_html / test / files /

-rwxrwxrwx 1 apache apache 595284 Apr 15 13:58 myfile.jpg

然后我的代码使用php函数“move_uploaded_file”将文件移动到/ public_html / test / files /到/ public_html / test / files / mydirectory /,如下所示

move_uploaded_file('/public_html/test/files/myfile.jpg', '/public_html/test/files/mydirectory/myfile.jpg');

它不起作用。如何解决这个问题?

如果我将/ public_html / test / files / mydirectory /的所有权改为lamp:apache而不是apache:apache,然后再次上传文件,move_uploaded_file工作正常。

注意:用户“lamp”属于“apache”组。

===================

PHP Safe_mode已启用,只是将其关闭并且有效:)

2 个答案:

答案 0 :(得分:1)

这一行:

move_uploaded_file('/public_html/test/files/myfile.jpg', '/public_html/test/files/mydirectory/myfile.jpg');

应该像:

move_uploaded_file('/public_html/test/files/myfile.jpg', '/public_html/test/files/mydirectory');

答案 1 :(得分:1)

问题未经许可。你错误地使用了move_uploaded_file()函数。

正确使用

move_uploaded_file ( string $filename , string $destination )

用此替换您的代码。

move_uploaded_file('/public_html/test/files/myfile.jpg', '/public_html/test/files/mydirectory');

了解更多详情

http://php.net/manual/en/function.move-uploaded-file.php