PHP move_uploaded_file() 无故失败
PHP move_uploaded_file() FAILS without reason
我无法进行 php 上传。
PHP 5.4.45
森托斯 6.7。
阿帕奇 2.2.27.
我有一个 HTML 文件:
<form enctype="multipart/form-data" action="test2.php" method="POST">
Send this file: <input name="userfile" type="file" />
<input type="submit" value="Send File" name="submit"/>
</form>
我有 PHP 个文件:
<?php
$uploaddir = '/home/michael/public_html/forum/files/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Error!\n";
}
echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";
?>
当我 运行 它时,我得到:
Error!
Here is some more debugging info:Array
(
[userfile] => Array
(
[name] => 184958.jpg
[type] => image/jpeg
[tmp_name] => /tmp/phpupab11
[error] => 0
[size] => 1473603
)
)
并且文件没有移动到新位置。相反,我在新位置得到了一个同名的 0 大小文件。
-rw-r--r-- 1 michael michael 0 Apr 5 16:33 184958.jpg
服务器日志记录错误:
[error] [client xx.xx.xx.xx] PHP Warning: move_uploaded_file():
Unable to move '/tmp/phpupab11' to '/home/michael/public_html/forum/files/184958.jpg'
in /home/michael/public_html/forum/test2.php on line 9
似乎文件已上传到 /tmp 目录,但无法移动到其他位置。
据我所知,这是一个权限问题。但是文件夹 "files" 的权限似乎不错 - 777(拥有者 michael=username):
drwxrwxrwx 2 michael michael 1216512 Apr 5 13:16 files
还有PHP个变量:
post_max_size 20M
upload_max_filesize 20M
upload_tmp_dir /tmp
file_uploads On
memory_limit 1024M
我很乐意获得一些帮助或至少寻求解决问题的指导。
谢谢。
文件所有者必须是 Web 服务器 运行 下的进程,很可能是 apache。将 files 目录设置为具有写权限的 apache 所有。
问题没有解决。
/home 下的文件夹无法接收上传的文件。 permissions/ownership 更改都没有帮助。
无论如何,找到了解决方法。不理想且不安全,但有效并且在我找出这种奇怪行为的原因之前这已经足够了。
我在根目录 (/files_of_forum) 和权限 (michael:michael 777) 中创建了一个文件夹,并在论坛中更改了附件的目录(原来的 "files" 改为“../../ ../../files_of_forum”。将所有文件从原始文件夹移动到新文件夹。
现在一切正常。
感谢所有试图提供帮助的人。
对于那些因为类似的错误来到这里的人,我找到了针对我自己的特殊案例的解决方案,我分享这个解决方案以防你们像我一样不幸(如果下面的任何清单对你来说没有答案,请忽略这个答案):
- 您正在本地开发
- 您已经安装了 Avast
- 您的 WAMP 服务器工作正常,但由 php artisan serve (Laravel) 启动的服务器由于某些原因出现问题,您无法 运行 move_uploaded_file PHP 方法
您的 Avast 正在阻止您的 php.exe 来自 运行ning zzzzzzzzz...
不是因为权限,目录是否存在,文件大小 php.ini,保存到 public 或存储,bla bla bla ...
希望能帮到和我一样不幸的人。
我无法进行 php 上传。 PHP 5.4.45 森托斯 6.7。 阿帕奇 2.2.27.
我有一个 HTML 文件:
<form enctype="multipart/form-data" action="test2.php" method="POST">
Send this file: <input name="userfile" type="file" />
<input type="submit" value="Send File" name="submit"/>
</form>
我有 PHP 个文件:
<?php
$uploaddir = '/home/michael/public_html/forum/files/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Error!\n";
}
echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";
?>
当我 运行 它时,我得到:
Error!
Here is some more debugging info:Array
(
[userfile] => Array
(
[name] => 184958.jpg
[type] => image/jpeg
[tmp_name] => /tmp/phpupab11
[error] => 0
[size] => 1473603
)
)
并且文件没有移动到新位置。相反,我在新位置得到了一个同名的 0 大小文件。
-rw-r--r-- 1 michael michael 0 Apr 5 16:33 184958.jpg
服务器日志记录错误:
[error] [client xx.xx.xx.xx] PHP Warning: move_uploaded_file():
Unable to move '/tmp/phpupab11' to '/home/michael/public_html/forum/files/184958.jpg'
in /home/michael/public_html/forum/test2.php on line 9
似乎文件已上传到 /tmp 目录,但无法移动到其他位置。 据我所知,这是一个权限问题。但是文件夹 "files" 的权限似乎不错 - 777(拥有者 michael=username):
drwxrwxrwx 2 michael michael 1216512 Apr 5 13:16 files
还有PHP个变量:
post_max_size 20M
upload_max_filesize 20M
upload_tmp_dir /tmp
file_uploads On
memory_limit 1024M
我很乐意获得一些帮助或至少寻求解决问题的指导。 谢谢。
文件所有者必须是 Web 服务器 运行 下的进程,很可能是 apache。将 files 目录设置为具有写权限的 apache 所有。
问题没有解决。 /home 下的文件夹无法接收上传的文件。 permissions/ownership 更改都没有帮助。 无论如何,找到了解决方法。不理想且不安全,但有效并且在我找出这种奇怪行为的原因之前这已经足够了。 我在根目录 (/files_of_forum) 和权限 (michael:michael 777) 中创建了一个文件夹,并在论坛中更改了附件的目录(原来的 "files" 改为“../../ ../../files_of_forum”。将所有文件从原始文件夹移动到新文件夹。 现在一切正常。 感谢所有试图提供帮助的人。
对于那些因为类似的错误来到这里的人,我找到了针对我自己的特殊案例的解决方案,我分享这个解决方案以防你们像我一样不幸(如果下面的任何清单对你来说没有答案,请忽略这个答案):
- 您正在本地开发
- 您已经安装了 Avast
- 您的 WAMP 服务器工作正常,但由 php artisan serve (Laravel) 启动的服务器由于某些原因出现问题,您无法 运行 move_uploaded_file PHP 方法
您的 Avast 正在阻止您的 php.exe 来自 运行ning zzzzzzzzz... 不是因为权限,目录是否存在,文件大小 php.ini,保存到 public 或存储,bla bla bla ... 希望能帮到和我一样不幸的人。