我正在使用以下代码,它正在本地计算机上成功上载文件。在我的本地机器上显示“已成功上载”。
// Upload file
$moved = move_uploaded_file($_FILES["file"]["tmp_name"], "images/" . "myFile.txt" );
if( $moved ) {
echo "Successfully uploaded";
} else {
echo "Not uploaded";
}
但当我在我的在线服务器上使用此代码时,它并没有上传文件,只是显示消息“NotUpload”。
我怎样才能知道问题是什么,怎样才能让实际问题显示给用户?
13条答案
按热度按时间hc8w905p1#
检查web服务器是否具有写入“images/”目录的权限
9lowa7mx2#
按如下方式编辑代码:
它将为您提供以下错误代码值1到8之一:
upload_err_ini_size=值:1;上载的文件超出了php.ini中的upload\u max\u filesize指令。
上传错误表单大小=值:2;上载的文件超过了html表单中指定的max_file_size指令。
上传错误部分=值:3;上载的文件仅部分上载。
upload_err_no_file=值:4;没有上载任何文件。
upload_err_no_tmp_dir=值:6;缺少一个临时文件夹。在PHP5.0.3中引入。
upload\u err\u cant\u write=值:7;无法将文件写入磁盘。在PHP5.1.0中引入。
上传错误扩展=值:8;php扩展停止了文件上载。php没有提供一种方法来确定导致文件上传停止的扩展名;使用phpinfo()检查已加载扩展的列表可能会有所帮助。
hgb9j2n63#
试试这个:
这将立即标记任何文件权限错误。
eufgjt7s4#
我怎么知道是什么问题
容易的。请参阅Web服务器的错误日志。
如何让实际问题显示给用户?
永远不要这样做。
一个普通的用户不会理解这个错误。
恶意用户不应得到任何反馈,尤其是以信息量很大的错误消息的形式。
只需显示一页的借口。
如果无法访问服务器的错误日志,则任务会变得更加复杂。
有几种方法可以联系错误消息。
要在屏幕上显示错误消息,可以将这些行添加到代码中
或创建自定义错误日志文件
还有其他一些方法。
但您必须了解,如果没有实际的错误消息,您将无法移动。在黑暗中很难失明
iovurdzv5#
move_uploaded_file()
将返回:FALSE
如果文件名无效FALSE
及issue a warning
如果apache进程没有对源目录或目标目录的读/写权限,则在错误日志中php错误日志
我的php错误日志位于:
/var/log/httpd/error_log
有这些错误:警告:移动上传的文件(images/robot.jpg):无法打开流:第78行/var/www/html/mysite/mohealth.php中的权限被拒绝
警告:move_upload_file():无法将第78行的“/tmp/phpskd2qm”移动到/var/www/html/mysite/mohealth.php中的“images/robot.jpg”
move_uploaded_file()
尝试将文件从临时目录移动到目标目录。当apache进程尝试移动文件时,它无法读取临时目录或写入目标目录。查找运行apache(web服务器)的用户通过以下命令检查运行apache服务的用户:
ps aux | grep httpd
. 第一列是用户名。检查临时目录的读取权限:您可以通过调用
echo sys_get_tmp_dir();
在php页面中。然后在命令行上,发出ls -ld /tmp/temporary-dir
查看apache用户是否有权在此处读取检查目标目录的写入权限:问题
ls -ld /var/www/html/destination-directory
查看apache用户是否有权在此处写入根据需要使用添加权限
chown
或chgrp
使用以下命令重新启动apachesudo service httpd restart
sqserrrh6#
您是否检查文件是否已上载?可能您超过了最大发布大小或最大上传文件大小。当使用filezilla登录时,您正在复制文件,当通过php wiritng上传文件时,该文件来自运行apache的用户(例如www-data),请尝试将chmod 755用于图像。
gcxthw6b7#
或者运行suexec,不再需要更改权限。
gr8qqesn8#
请检查您的
form
标记具有以下属性:enctype="multipart/form-data"
r1zhe5dt9#
wtlkbnrh10#
在虚拟主机上检查您的
disk quota
.如果超过配额,
move_uploaded_file
返回错误。ps:我已经找了很久了:)
r7knjye211#
请检查权限“images/”目录
az31mfrm12#
我遇到了一个非常模糊和恼人的错误原因6。在摆弄了一些安装了nfs的卷之后,上传开始失败。通过重新启动服务解决了问题
x0fgdtte13#
在里面
php.ini
搜索上载最大文件大小和发布最大文件大小。我也遇到了同样的问题,解决方法是将这些值更改为大于文件大小的值。