2015-01-27 9 views
1

WordPress 4.1 설치 및 사용자가 페이지/게시물의 댓글에 이미지를 추가 할 수있는 플러그인이있는 Apache 2.4.7 상자가 있습니다. https://wordpress.org/plugins/comment-images/). Require 문이 사이트에 대한 액세스를 제한하기 위해 추가되면 이미지 업로드 기능이 작동하지 않습니다 (개발 환경이므로 제한된 액세스가 필요합니다).WordPress 덧글 아파치 요구 사항이 사용되었을 때 Image Plugin이 업로드 된 이미지를 저장하지 않음

또는Require 지시 하지만, 지시어를 추가 할 때이 업로드 된 이미지에 대한 참조가 제대로 워드 프레스에 저장되지 않습니다없는 이미지 업로드가 실제로 작품.

로그에서 오류는 다음과 같습니다

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()을 출력 :

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 

나는 개체 (직렬화) 파일로 전달되는 덤프. I는 개인 정보 보호를 위해 배열에서 주석 데이터를 삭제 했어 다음 WP와 <Directory>에 대한

#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] 

지시어가에서 설치 (난독 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 거기에 내가 이해할 수있는 로컬 상자에 대한 모든 것을 다 커버해야합니다.

상황은 내가 확인했습니다

  • 재귀에 제대로
  • 권한을 chown'ed되어 아파치에 비추어 등
  • 워드 프레스 설치 폴더 모듈 및 주문 중요성을 정식 2.4 변경을 CONFIGS 개정 업로드 폴더는 777 번이지만 업로드가 항상 성공하기 때문에 중요하지 않습니다.

이 문제는 어디에 있습니까?

답변

0

서버에서 이미지를 다운로드 할 수 없다는 사실을 플러그인이 잘 처리하지 않는 것처럼 보입니다.

(class-comment-image.php on line 480)이이 조각에 해당하는 경고 :

$img_url = media_sideload_image($comment_image_file['url'], $post_id); 

preg_match_all("#[^<img src='](.*)[^'alt='' />]#", $img_url, $matches); 

$comment_image_file['url'] = $matches[0][0]; 

다음 media_sideload_image 기능은 이미지를 얻을 컬 사용하고 있기 때문에 당신의 제한으로는 성공하지 않으며, WP는 에러 객체를 반환 preg_match_all 함수는 처리 할 수 ​​없습니다.

데이터는 나중에 메타 데이터에 저장됩니다. 업로드가 작동하더라도 참조가 저장되지 않는 이유를 설명합니다.

Require local이 dev 서버에서 작동하지 않는 경우 로컬 주소로 바꾸려고 할 수 있습니다.

+0

필요 ip 추가를 시도했지만 작동하지 않았습니다. 그러나이 사고 방식은 저를 답으로 이끌었습니다! –

0

나는 johansatge의 제안에 따라 Require ip <local-ip-of-box>을 추가하려고 시도했습니다. 이것이 작동하지 않는 동안, 그것은 나를 생각하게했다 ..

박스는 떠있는 공인 IP를 할당하는 Azure에있다. 이 상자에 사용 된 도메인이 hosts 파일에 추가되지 않았기 때문에 고의로 cURL 요청이 튀어 나와 공개 IP를 사용하고있었습니다.

/etc/hosts의 루프백 (127.0.0.1) 항목에 <domain-of-website-on-box>을 추가하는 것이 솔루션입니다.