我有一个 Apache 2.4.7 盒子,安装了 WordPress 4.1 并添加了一个插件,允许用户将图像添加到页面/帖子的评论(https://wordpress.org/plugins/comment-images/)。Require
当添加语句以限制对站点的访问时,图像上传功能不起作用(这是一个开发环境,因此需要有限的访问权限)。
图像上传实际上可以使用或不使用 Require
指令,但是当添加指令时,对上传图像的引用不会正确保存到 WordPress。
日志中的错误是:
PHP Warning: preg_match_all() expects parameter 2 to be string, object given in /var/www/html/wp-content/plugins/comment-images/class-comment-image.php on line 480
我将传递的对象转储到文件中(序列化):
O:8:"WP_Error":2:{s:16:"^@WP_Error^@errors";a:1:{s:8:"http_404";a:1:{i:0;s:12:"Unauthorized";}}s:20:"^@WP_Error^@error_data";a:0:{}}
我也输出了print_debug_backtrace()
来显示调用。出于隐私原因,我不得不从数组中删除评论数据:
#0 Comment_Image->save_comment_image(63)
#1 call_user_func_array(Array ([0] => Comment_Image Object ([] => 5000000,[] => ,[] => ),[1] => save_comment_image), Array ([0] => 63)) called at [/var/www/html/wp-includes/plugin.php:496]
#2 do_action(wp_insert_comment, 63, stdClass Object ()) called at [/var/www/html/wp-includes/comment.php:1941]
#3 wp_insert_comment(Array ()) called at [/var/www/html/wp-includes/comment.php:2083]
#4 wp_new_comment(Array ()) called at [/var/www/html/wp-comments-post.php:137]
<Directory>
带有 WP 安装的指令是(带有混淆的 IP):
AllowOverride All
<RequireAny>
AuthType Basic
AuthName "Restricted Access"
AuthBasicProvider file
AuthUserFile /var/www/.htpasswd
Require valid-user
Require user dev www-data
Require ip xx.xx.xx.xx/xx
Require ip xx.xx.xx.xx
Require local
</RequireAny>
如果我添加Require all granted
(或只是删除Require
指令),那么该功能将按预期工作并显示上传的图像。请注意Require local
,据我所知,它应该涵盖本地盒子的所有内容。
我检查过的事情:
- 根据 Apache 2.4 对身份验证模块和排序重要性等的更改修改了配置。
- WordPress安装文件夹被正确递归地chown'ed
- 上传文件夹的权限是 777'd,但并不重要,因为上传总是成功
这个问题出在哪里??