Здравствуйте.
Ситуация похожа на
, но окружение другое.
Версия WP 4.9.5 (дополнение поставил сегодня впервые, как работало на предыдущих версиях WP - сказать не могу).
Версия PrimeForum 1.4.0
По шагам:
1. В форме создания нового сообщения загружаю изображение с локального диска.
Оно нормально загружается, отображается в области превью. Предпросмотр сообщения работает корректно, изображение отображается. На сервере изображение загрузилось в папку \wp-content\uploads\rcl-uploads\users-temp\1, но в единственном экземпляре, уменьшенное до 800x600, оригинала нет. (При загрузке по ссылке - в папке на сервере оригинал и копия 800x600.)
В логах WP сразу после загрузки изображения:
[04-Apr-2018 18:23:15 UTC] PHP Notice: Undefined variable: button_crp in \wp-content\wp-recall\add-on\prime-image-uploader\hooks.php on line 238 [04-Apr-2018 18:23:15 UTC] PHP Notice: Undefined variable: thumb_url in \wp-content\wp-recall\add-on\prime-image-uploader\hooks.php on line 256
2. При добавлении сообщения на форуме - сообщение появляется, изображения нет.
В библиотеке медиафайлов изображения нет. Остается в \wp-content\uploads\rcl-uploads\users-temp\1.
В логах WP следующее:
[04-Apr-2018 18:24:33 UTC] PHP Notice: Undefined index: item_type in \wp-content\plugins\wp-recall\add-on\prime-forum\functions-actions.php on line 464 [04-Apr-2018 18:24:33 UTC] PHP Notice: Trying to get property of non-object in \wp-content\plugins\wp-recall\add-on\prime-forum\functions-posts.php on line 45 [04-Apr-2018 18:24:33 UTC] PHP Notice: Trying to get property of non-object in \wp-content\plugins\wp-recall\add-on\prime-forum\functions-actions.php on line 152 [04-Apr-2018 18:24:33 UTC] PHP Notice: Trying to get property of non-object in \wp-content\plugins\wp-recall\add-on\prime-forum\functions-actions.php on line 152 [04-Apr-2018 18:24:33 UTC] PHP Notice: Undefined property: stdClass::$post_edit in \wp-content\plugins\wp-recall\add-on\prime-forum\functions-post-content.php on line 215 [04-Apr-2018 18:24:33 UTC] PHP Notice: Undefined variable: object in \wp-content\plugins\wp-recall\add-on\rating-system\classes\class-rcl-rating-box.php on line 82
В логах wp-recall пусто.
В пхп одни нотисы, ошибок нет. У меня на одном сайте аналогичная проблема, причем у другого сайта на том же сервере проблемы нет.
Я у себя вот что проделал:
Зашел в папку плагина "Prime Image Uploader" и после 31 строки
$attach_id = media_sideload_image( $url, 0, __('Изображение сообщения форума'), 'id');
Добавил
rcl_add_log('Проблема с картинкой', $attach_id);
В итоге при публикации поста вот такая ошибка:
18:43:33 Проблема с картинкой WP_Error Object ( [errors] => Array ( [http_request_failed] => Array ( [0] => cURL error 52: Empty reply from server ) ) [error_data] => Array ( ) )
В чем беда хз, 2 полностью идентичных сайта на одном хостинге, но на одном грузятся картинки на форум, а на другом нет
Preci
Спасибо за подсказку! Все дело оказалось в том, что я тестировал дополнение на локальном "как бы" staging сервере.
WP_Error Object ( [errors] => Array ( [http_request_failed] => Array ( [0] => cURL error 60: SSL certificate problem: unable to get local issuer certificate ) ) [error_data] => Array ( ) )
Проверил - на реальном сервере все работает без проблем. Еще раз спасибо!
Жалко, конечно, что на локальном так происходит, весь остальной функционал работает нормально. Может, знаете, как победить эту проблему?
Убирать ssl на локальном сервере не хочется однообразия ради. Перечитал полгугла - все советы с сертификатами не помогают. Единственное, что помогло - явно отключить проверку curl_setopt($cHandler, CURLOPT_SSL_VERIFYPEER, false);
, но править пришлось в wp классе cURL - конечно пришлось откатить.
Код пока не копал, но что интересно - загрузка изображений через wp user frontend работает нормально, да и аватарки профилей грузятся нормально.
Ладно, видимо, пока придется отложить проблему на локальном сервере. Главное - на продакшене работает.
Дошли руки, подебажил xdebug'ом запрос.
Решить проблему загрузки файлов на локальном тестовом сервере (где включен ssl, но нет настоящих подписанных сертификатов) оказалось просто. Вдруг кто тоже столкнется.
Проблема возникает на сервере с включенным HTTPS на PHP 5.6 и выше (с этой версии PHP по умолчанию включена проверка сертификатов ssl).
Подцепляемся на фильтр http_request_args
и выставляем параметр sslverify
в false. При этом обязательно проверяем, что мы на локальном серваке, где https://test.local - адрес нашего локального сервера.
add_filter( 'http_request_args', 'my_disable_sslverify_for_local_server', 99, 2); function my_disable_sslverify_for_local_server($args, $url) { //rcl_add_log('http_request_args args = ', $args); //rcl_add_log('http_request_args url', $url); if (strpos($args['user-agent'], 'https://test.local') !== false && strpos($url, 'https://test.local/wp-content/uploads/rcl-uploads/users-temp') !== false) $args['sslverify'] = false; return $args; }
melet сказал(а)
Дошли руки, подебажил xdebug'ом запрос.
Решить проблему загрузки файлов на локальном тестовом сервере (где включен ssl, но нет настоящих подписанных сертификатов) оказалось просто. Вдруг кто тоже столкнется.
Проблема возникает на сервере с включенным HTTPS на PHP 5.6 и выше (с этой версии PHP по умолчанию включена проверка сертификатов ssl).
Подцепляемся на фильтрhttp_request_args
и выставляем параметрsslverify
в false. При этом обязательно проверяем, что мы на локальном серваке, где https://test.local - адрес нашего локального сервера.
add_filter( 'http_request_args', 'my_disable_sslverify_for_local_server', 99, 2); function my_disable_sslverify_for_local_server($args, $url) { //rcl_add_log('http_request_args args = ', $args); //rcl_add_log('http_request_args url', $url); if (strpos($args['user-agent'], 'https://test.local') !== false && strpos($url, 'https://test.local/wp-content/uploads/rcl-uploads/users-temp') !== false) $args['sslverify'] = false; return $args; }
Такая же проблема случилась, ничего не понял короче, вставил ваш код в функшонс php и все заработало, спасибо ахах 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝
dim сказал(а)
melet сказал(а)
Дошли руки, подебажил xdebug'ом запрос.
Решить проблему загрузки файлов на локальном тестовом сервере (где включен ssl, но нет настоящих подписанных сертификатов) оказалось просто. Вдруг кто тоже столкнется.
Проблема возникает на сервере с включенным HTTPS на PHP 5.6 и выше (с этой версии PHP по умолчанию включена проверка сертификатов ssl).
Подцепляемся на фильтр http_request_args и выставляем параметр sslverify в false. При этом обязательно проверяем, что мы на локальном серваке, гдеВы не можете просматривать опубликованные ссылки- адрес нашего локального сервера.
add_filter( 'http_request_args', 'my_disable_sslverify_for_local_server', 99, 2);
function my_disable_sslverify_for_local_server($args, $url) {
//rcl_add_log('http_request_args args = ', $args);
//rcl_add_log('http_request_args url', $url);if (strpos($args['user-agent'], 'https://test.local') !== false &&
strpos($url, 'https://test.local/wp-content/uploads/rcl-uploads/users-temp') !== false)
$args['sslverify'] = false;return $args;
}
Такая же проблема случилась, ничего не понял короче, вставил ваш код в функшонс php и все заработало, спасибо ахах 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝 🤝
Куда это нужно вписать? У меня такая же проблема.