问题 Magento 1.9.2.3,从后端上传图像后,权限设置为640而不是644


完成magento 1.9.2.3的全新安装后,我意识到从后端上传图像时出现问题。文件获得权限640而不是644.如何调整此值,以便当magento将图像上传到服务器时,它会获得644?

目前我必须使用SSH或acp手动设置权限。

谢谢分配!


6338
2018-01-26 21:53


起源

SUPEE-7405解决了一个问题,即php代码可以上传到网站,然后由全局用户调用以运行它。解决方法是不允许创建世界可读文件。 community.magento.com/t5/Security-Patches/... - Fiasco Labs
可能重复 Magento 1.X - SUPEE 7405 chmod 640问题 - Mathew Tinsley


答案:


打开以下文件:

lib/Varien/File/Uploader.php

寻找这一行:

chmod($destinationFile, 0640);

用这条线替换它:

chmod($destinationFile, 0644);

寻找这一行:

chmod($destinationFile, 0750);

用这条线替换它:

chmod($destinationFile, 0755);

10
2018-01-28 11:44



我做了,不幸的是没有帮助。这让我相信,有一些其他文件需要编辑? - Skypiboy
Downvoted,应该在服务器上纠正权限,而不是通过修改系统中的核心文件。 - zigojacko


Magento 1.9.2.3或SUPEE-7405包含对文件权限的一些更改。通过Magento管理面板上传的文件(即产品图片上传)默认情况下不再是全局可读的(之前:644 /之后:640)。 目录也不是世界可执行的(之前:755 /之后:750)。这导致Web服务无法从Magento读取新创建的文件。

解决方案不是更改核心文件以更改文件权限,而是将运行Web服务的用户添加到PHP配置用户的组中。 例如,我在我的服务器上运行nginx,所以这是解决问题所必须做的事情:

  • usermod -a -G groupname username usermod -a -G
  • php-fpm-configured-groupname nginx

2
2018-02-09 09:35



同意你。 - De Nguyen
这当然是更正确的做事方式。不幸的是,答案并不适用于所有人。 - Chris Sobolewski
这是正确的答案。默认系统用户需要与拥有文件/文件夹的组在同一组中进行读/写访问。正确设置此问题将得到解决。 - zigojacko


升级到Magento 1.9.2.4,它解决了补丁SUPEE-7405或Magento 1.9.2.3引起的问题。 如果由于某种原因你无法升级那么你应该安装SUPEE-7405 v 1.1,这将纠正权限问题。 Magento自己的这个补丁恢复了限制较少的文件权限(文件为0666,目录为0777),这使您可以正常查看图像等。


2
2017-08-15 09:06



这是解决此问题的正确方法。 - Larsen


file:- lib/Varien/File/Uploader.php


第219行:

chmod($destinationFile, 0640);
chmod($destinationFile, 0644);



第541行:

if (!(@is_dir($destinationFolder) || @mkdir($destinationFolder, 0750, true))) {

至:

if (!(@is_dir($destinationFolder) || @mkdir($destinationFolder, 0755, true))) {

1
2018-02-11 03:23



Downvoted,应该在服务器上纠正权限,而不是通过修改系统中的核心文件。 - zigojacko


该解决方案适用于我们同样的问题。花了大约10个小时寻找解决方案,很高兴我们找到了它。

请参阅解决方案和参考链接。

单击此处查看解决方案链接

解: Magento Community Edition 1.9.2.3和安全补丁SUPEE-7405引入了一个新的图像上传错误,导致新上传图像的文件权限不正确。

如果您上传了任何未显示的图像,首先要为文件和数据库设置正确的文件权限。

要永久解决问题,您需要修改Magento中的文件。

重要说明:这是一个手动黑客攻击,在Magento升级过程中将被覆盖。

打开以下文件: - LIB /瓦瑞恩/文件/ Uploader.php

寻找这一行: - chmod($ destinationFile,0640);

用这条线替换它: - chmod($ destinationFile,0644);

寻找这一行: - chmod($ destinationFile,0750);

用这条线替换它: - chmod($ destinationFile,0755);

保存文件,上传的下一张图片应正确加载。


0
2018-01-28 17:51



该解决方案重新引入了补丁修复的问题。您无需对核心文件进行任何修改即可解决问题,您只需配置权限即可使Web服务器成为文件的所有者或文件组中的所有者。 - Mathew Tinsley
mtinsley,这个问题实际上是在最新补丁安装完成后提出的。即使网络服务器上的权限正确,新上传的文件仍会以错误的权限上传。本案例中应用的最新补丁是7405,已于2016年1月20日发布。上述解决方案适用于2个站点。 - Daniel Macadar
使用该补丁,Magento以与Magento推荐的文件权限一致的方式设置权限。对Magento进行核心修改以授予比必要更多的权限可以解决问题,但这并不能使其正确。您还可以通过将Web服务器添加到文件组来解决此问题,而无需触及Magento。 devdocs.magento.com/guides/m1x/install/... - Mathew Tinsley
根据@mtinsley评论,这不是一个解决方案,因此我的downvote。 - zigojacko