新的WordPress上载已中断

时间:2015-05-28 作者:Lightheaded

从3.8.1版开始,我就一直在运行WordPress网站网络(Multisite)。我一直在不断更新插件和核心。在某种程度上,我发现上传新图像会产生错误的结果。

当我上传文件时,它会转到wp-content/blogs.dir/7/files, 7作为博客id。WordPress出于某种原因认为应该链接到https://siteurl.com/files/file-name.png 因此,媒体库或新添加内容中的所有图像都会被破坏。

我不记得编辑过任何配置,以前所有的文件都转到了目录,例如。wp-content/uploads/sites/7/files/2015/05/. 我猜是更新某个插件或核心导致了该行为,但当我查看VCS的历史记录时,我无法恢复以前的上载行为,因此它暗示该问题可能是由文件权限引起的。htaccess或类似产品。我也试着和他们一起玩,但没有成功。

在查看源代码时,我不知道它以前是如何工作的。有一行定义了博客的上传路径。此处为目录https://github.com/WordPress/WordPress/blob/master/wp-includes/ms-default-constants.php#L31

我试图覆盖这三个值

define( \'UPLOADBLOGSDIR\', \'wp-content/blogs.dir\' );
define( \'UPLOADS\', UPLOADBLOGSDIR . "/{$wpdb->blogid}/files/" );
define( \'BLOGUPLOADDIR\', WP_CONTENT_DIR . "/blogs.dir/{$wpdb->blogid}/files/" );
使用

define( \'UPLOADBLOGSDIR\', WP_CONTENT_DIR . \'/uploads\' );
define( \'UPLOADS\', UPLOADBLOGSDIR . "sites/{$wpdb->blogid}/" );
define( \'BLOGUPLOADDIR\', WP_CONTENT_DIR . "/uploads/{$wpdb->blogid}/" );
但是我无法在wp配置中获得$wpdb->blogid。php,所以它不工作。尽管如此,我还是不知道它以前是怎么工作的。

有什么想法吗?

P、 S刚刚发现上传对顶级博客有效。

P、 S2尝试在顶级博客中上载文件。它显示指向的链接/wp-content/uploads/2015/05/Screen-Shot-2015-05-29-at-09.56.02.png 在媒体浏览器中。现在当我打开/wp-includes/ms-files.php?file=2015/05/Screen-Shot-2015-05-29-at-09.56.02.png 我得到一个404,当我回显文件路径ms文件时。php试图包括/wp-content/blogs.dir/1/files/2015/05/Screen-Shot-2015-05-29-at-09.56.02.png

2 个回复
最合适的回答,由SO网友:Lightheaded 整理而成

经过痛苦的搜寻,我发现ms_files_rewriting 选项已打开。自从安装后,我就关闭了它,但在更新某些内容的过程中,它在db中被设置为1。将其设置回0修复了该问题。

SO网友:Art Smith

我的中缺少这一行。htaccess文件,我从备份中恢复了它。我不知道WP是否在升级过程中删除了它,或者是其他插件删除了它,但替换它修复了问题:

#uploaded files
RewriteRule ^files/(..+) wp-includes/ms-files.php?file=$1 [L]
阿特·史密斯

结束

相关推荐

WP AlChemy MediaAccess在WP编辑器中插入媒体链接,而不是在Metabox中插入自定义字段

我目前正在使用WPAlchemy类以自定义post类型(更准确地说,是来自EventEspresso插件的事件)创建元盒。此元数据库应该能够调用媒体上载程序并插入一些自定义元的图像。它工作得很好,我可以调用媒体上传程序并保存来自文本字段的数据。但是,打开媒体上载程序后,选择图像并单击“插入到帖子”。图像链接转到WP编辑器文本区域,而不是自定义元框中的我的文本字段。谢谢各位。希望它足够清楚,并为可能不是很好的书面英语抱歉。