Magento 1.7产品图片无法上传,已装7405v1.1补丁仍未解决
这种图片上传后卡在tmp目录、没法同步到目标文件夹的情况确实闹心,尤其是已经打了7405v1.1补丁还没解决的话,咱们可以从这几个方向逐一排查:
先把目录权限这块捋清楚
首先确认pub/media/catalog/product和var/tmp这两个目录的权限和所有者是否正确。Magento需要这俩目录有可写权限,一般设置成775就够了,同时要保证目录的所有者和你的Web服务器用户一致(比如Apache用www-data,Nginx用nginx)。可以用这两条命令快速调整:chmod -R 775 pub/media/catalog/product var/tmp chown -R www-data:www-data pub/media/catalog/product var/tmp注意:根据你服务器的实际环境替换用户组哈。
检查Magento文件系统的所有者配置
有时候权限数值对了,但Magento的文件系统所有者没匹配上,也会导致文件移动失败。你可以先去后台的系统>工具>文件系统权限里看看状态,或者直接跑几个CLI命令重置一下:bin/magento setup:upgrade bin/magento setup:static-content:deploy -f bin/magento cache:flush执行完之后再试试上传图片,说不定就好了。
确认7405补丁真的装到位了
虽然你说已经装了7405v1.1补丁,但难保安装过程中出了小问题。可以去var/log/patch.log里看看补丁的安装日志,确认有没有报错;或者用命令检查模块状态,看看补丁相关的模块是否正常启用:bin/magento module:status另外,这个补丁主要是修复上传安全问题,说不定和你装的某个第三方模块冲突了——可以暂时禁用所有自定义模块,再测试上传,排查是不是冲突导致的。
排查图片上传的核心逻辑是否被修改
Magento处理图片从tmp移动到media目录的逻辑,主要在Magento/Catalog/Model/Product/Image/Uploader.php这个文件里。你可以检查一下这个文件有没有被自定义模块重写,或者被修改过。如果有自定义重写的话,一定要确认重写后的代码里,有没有正确执行文件移动的步骤(比如用rename或者copy方法把文件从tmp挪到目标目录)。看看服务器端的限制是否卡了脖子
有些服务器的open_basedir配置会限制PHP能访问的目录,如果var/tmp或者pub/media不在允许范围内,Magento就没法移动文件。你可以去php.ini里查一下open_basedir的设置,确认这两个目录都在列表里。另外,也检查下upload_max_filesize和post_max_size的数值,别因为文件太大导致上传半路夭折(虽然你说控制台没报错,但还是确认下放心)。
内容的提问来源于stack exchange,提问作者Bhavesh Jain




