在Directadmin上使用Mediawiki上传图片时出现错误

3

我在我的Web服务器上(使用DirectAdmin)安装了MediaWiki,但我无法启用上传图片(例如 .jpg 格式)的功能。

我已经在设置中将 $wgEnableUploads = true;,并检查了 images 文件夹是可写的(权限为755)。但是当我尝试上传一个名为 testimage.jpg 的测试图片时,出现以下错误:

Could not store file "/tmp/phpjNV3oh" at "mwstore://local-backend/local-public/1/13/testimage.jpg". 

由于我使用的是共享网络托管,只能访问直接管理界面,无法设置图像文件夹的所有者(这里有一个答案)。我已经尝试将文件夹设置为777,但仍然没有改变。

有人知道问题出在哪里吗?可能是因为我使用了Cloudflare吗?此外,为什么错误返回的URL(mwstore://local-backend/local-public/1/13/testimage.jpg")不是普通的URL(如mysite.com/wiki/images或其他类似的URL)?


@hakre,我查了一下,图片已经成功上传到 images/temp/d/d2 目录。但是当我尝试直接在浏览器中访问图片时,会得到一个403错误。所以很可能是mediawiki无法访问 images/temp/d/d2 文件夹,就像我一样。问题是,我如何告诉apache不要阻止任何访问?我能否在父目录中放置一个httpd.conf,并使用此处建议的设置:https://dev59.com/weo6XIcBkEYKwwoYQiK7? - user1694077
听起来更像是mediawiki想要更改该文件的访问权限,但未能成功。如果您在chmod 777方面遇到问题,我怀疑您实际上无法更改apache conf。您可能会在.htaccess与您的主机提供商中有更多运气。无论如何,我建议您与服务器管理员进行故障排除。我个人会使用步进式调试器远程调试代码,以快速找到问题的确切原因。 - hakre
@hakre:这是来自错误日志的内容:[Sun Jun 08 23:20:46.420476 2014] [:error] [pid 6199] [client example.com:23278] PHP警告:在/home/username/domains/example.com/public_html/wiki/includes/filebackend/FSFileBackend.php的702行,由于安全原因已禁用popen()函数,参考者:http://www.example.com/wiki/index.php?title=Special:Upload&wpDestFile=testimage.jpg&wpForReUpload=1 - user1694077
@hakre:而 [Sun Jun 08 23:16:22.684117 2014] [:error] [pid 6196] [client example.com:39879] PHP Warning: cp '/tmp/phplnL46o' '/home/username/domains/example.com/public_html/wiki/images/1/13/testimage.jpg'\n in /home/username/domains/example.com/public_html/wiki/includes/filebackend/FSFileBackend.php on line 282, referer: http://www.example.com/wiki/Special:Upload - user1694077
@hakre,另外,我没有将chmod更改为777的问题。我可以做到这一点。但是,我没有通过命令行访问该站点,只能通过ftp和directadmin访问。 - user1694077
显示剩余2条评论
2个回答

0

您需要设置适当的安全上下文类型,以便SELinux停止抱怨。

sudo chcon -R -t httpd_sys_script_rw_t /var/www/mediawiki123/images/

别忘了将目录设置回正确的权限。

sudo chmod 755 /var/www/mediawiki123/images/

如果您需要 SELinux 相关的任何帮助,请浏览这里


0

我在共享主机上遇到了这个问题两次,有两种解决方法。

一:

  • LocalSettings.php中设置$wgHashedUploadDirectory = false,然后尝试上传另一个文件。

这样做,所有的文件都将被上传到$wgUploadDirectory, /images/foo.jpg而不是/images/x/xx/foo.jpg

请注意,如果您现在更改此设置,则将来不应将其设置为true,否则您将需要手动将文件移动到散列目录结构中。

二:

  • 联系您的主机支持服务

当我向我的主机支持服务发送电子邮件说明情况时,他们回复说/my_wiki/images内的所有文件夹都属于root而不是apache-user,因此由于我无法使用chown,他们进行了操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接