phpcms无法上传图片提示undefined的解决方法

发布时间:2020-01-11 11:16:32 来源:青锋建站 作者:青锋建站
  phpcms无法上传图片大多数原因是由于apache,nginx,PHP环境,系统环境所致,更直接的说是环境导致的权限受限所致。以下是青锋建站给大家分享的在各种情况下phpcms无法上传图片提示undefined或空白的解决方法。

phpcms无法上传图片

windows server系统下phpcms无法上传图片的原因与解决

1、apache对临时文件没有相应权限
  例如青锋建站在D盘新建一临时文件tmp/uploads,并在PHP.INI文件中修改临时文件的目录路径:’upload_tmp_dir= "D:/tmp/uploads" file_uploads = On。同时对这一临时文件设置让apache运行所使用的用户具备完全控制权限。

2、phpcms附件目录不具备定权限
 给予uploadfile写入权限(必须是apache所使用的用户)。

3、修改php可操作文件
  由于phpcms上传附件类使用的是copy函数,有时需要对操作的目录具备php可访问的权限,也就是apache虚拟主机中的php_admin_value open_basedir "D:wwwsjzphp"选项,将这一选项修改php_admin_value open_basedir "D:/tmp/uploads;D:/www/sjzphp",即表示PHP同时可操作临时文件目录和网站主目录。还有一种解决方法就是将phpcms/libs/classes/attachment.class.php中的copy函数替换为move_uploaded_file。将copy函数修改为move_uploaded_file函数后,可以不用设置php_admin_value open_basedir这一参数即可。

centos(linux)系统phpcms无法上传图片的解决方法

  linux下phpcms无法上传图片主要是权限的问题,可能是由于操作系统等导致。我们假设网站目录为 /home/www/sjzphp。
1、临时文件和附件目录无权限
  一般来说apache在linux环境下以user:apache;group:apache的方式运行,因此需要给予临时文件目录和附件目录相应的读写权限。一种最好的解决方法是新建一临时文件,设置权限的方式是将这两个目录设置拥有者为apache,例如我们在/home/www/目录下新建一临时目录tmp,然后设置权限:chown -R apache:apache /home/www/tmp;chown -R apache:apache /home/www/sjzphp/uploadfile。
2、selinux造成对文件的保护
  查看selinux状态,sestatus,将selinux关闭setenforce 0,可以将selinux临时关闭。这样一般就可以解决问题,当然还可能由于其他特殊原因就是chattr、yunsuo安全软件的问题导致。以下青锋建站将给大家详细说明。
3、其他特殊原因
  如果对uploadfile设置了chattr,会造成无法修改权限,可以取消uploadfile的相应属性设置:chattr -iR uploadfile。还有就是如果服务器安装了yunsuo安全软件后,会导致root用户无法对网站目录设置权限或创建文件的权限,这时可以把yunsuo软件缷载:/usr/local/yunsuo_agent/uninstall。

找到phpcms无法上传图片的原因

  虽然通过一些方法可以解决,但是我们有时候不能确定是哪种原因导致,可以采用增加代码来找到错误原因,这包括查看错误日志。这里我们使用另一种方法来作判断,可判断是临时文件的原因还是附件目录的问题。打开phpcms/libs/classes/attachment.class.php文件,在大约112行,if(!$this->overwrite && file_exists($savefile)) continue;这一句后面依次增加以下代码来测试问题所在:
增加此代码可以测试临时文件是否存在:var_dump($file['tmp_name']);exit;
增加此代码可以测试保存目录是否存正确:var_dump($savefile);exit;
增加此代码可以测试执行函数是否正确
if (!move_uploaded_file($file['tmp_name'], $savefile)) {
                var_dump("failed to move_uploaded_file");exit;
            }
            else
            {
                var_dump("success to move_uploaded_file");exit;
            }
增加这些代码后,上传图片并不会出现提示,我们可以通过查看无素的方式来找到错误输出,如下图:

  以上就是青锋建站给大家分享的phpcms无法上传图片提示undefined的解决方法。青锋建站,提供专业的高品质网站制作服务,包括网站建设,SEO,网络营销,phpcms建站开发php网站建设知名品牌,全国接单,为企业构建强有力的营销平台。
分享到:

Copyright © 2016-2026 青锋建站 版权所有