Ответы:
Сайт WordPress в основном работал без проблем, за исключением раздела панели инструментов сайта, где у него были некоторые проблемы с обновлением или установкой. Когда я попытался установить тему, она выдала мне ошибку «Установка не удалась: загрузка не удалась. Работающие транспорты не найдены».
К счастью, я исправил проблему с помощью следующего решения .
Оказывается, это сообщение об ошибке появляется, когда на сервере разработки отсутствуют отсутствующие расширения , поэтому WordPress не может выполнять внешние HTTP-запросы.
Решение довольно простое. Недостающие расширения, делающие эти HTTP-запросы возможными, уже установлены вместе с Wamp Server. По умолчанию они просто отключены. Чтобы включить их, нам нужно отредактировать файл конфигурации php.ini.
Редактирование файла php.ini
Файл php.ini содержит список многих расширений, некоторые из которых по умолчанию отключены. Единственное, что мне нужно было включить - это расширение openssl.
Вот шаги, чтобы включить это расширение:
Вот и все, что мы сделали !!!
HTTP-API WordPress был построен таким образом, что он работает на многих серверах, насколько это возможно, пробуя различные способы (транспорты) для этого.
Согласно сообщению об ошибке, рабочие транспорты отсутствуют, и поэтому WordPress не может отправлять исходящие HTTP-запросы.
Я бы порекомендовал вам установить что-то вроде плагина Core Control WordPress, который позволяет отлаживать все существующие HTTP-транспорты. Вполне возможно, что пока один транспорт не работает, другой может быть в порядке. Этот плагин позволяет отключить сломанный и протестировать HTTP API с новым транспортом.
Если выясняется, что на самом деле ни один из транспортов не работает, вам следует обратиться к вашему хостинг-провайдеру, чтобы хотя бы установить что-то вроде cURL на сервере, чтобы вы могли делать HTTP-запросы в PHP.
Советы по этому сообщению об ошибках весьма разнообразны, и никто, кажется, не дает исчерпывающего ответа (см. Некоторый блог , двуличный ответ и здесь и здесь на SO). Надеюсь, это более формальный взгляд на проблему.
Я рассматриваю только WordPress на PHP, обслуживаемый через Apache (в настоящее время я не могу комментировать NginX, так как я не пробовал его с PHP, и не могу комментировать другие фреймворки). Ответ может демонстрировать умеренный уклон по отношению к Windows 10 с помощью собственной сборки Apache 2.4.37, извлеченного поточно-ориентированного PHP 7.2 и WordPress 4.2.X.
PHP и CURL объясняет, довольно хорошо можно было бы добавить, что под капотом WordPress полагается Requests
, оберткой cURL
и fSockets
библиотек. Requests
предпочитает cURL
библиотеку, если она доступна, но якобы прибегнет к fSockets
библиотеке для загрузки плагинов / тем / и т. д. Ошибка «Нет транспорта» указывает на то, что ни одна библиотека не настроена должным образом в Apache или PHP. Также возможно, что брандмауэр тоже мешает процессу.
Протестируйте конфигурацию Apache и PHP, настроив и загрузив стандартный скрипт PHPinfo из вашего браузера. У этого должен быть отдельный раздел, озаглавленный cURL
, записи которого показывают различную информацию. В противном случае настройте и загрузите следующий скрипт для проверки.
<?php
echo 'Curl: ', function_exists('curl_init') ? 'Enabled' : 'Disabled';
?>
Я не знаю, как проверить fScokets
.
Для обеспечения доступности cURL
представляется необходимым включить его в php.ini
.
Убедитесь, что extentions_dir
правильно указывает на папку с расширениями
extentions_dir="ext"
(В качестве альтернативы extentions_dir="D:PATH/TO/php/ext"
часто предлагается)
Убедитесь, что cURL
расширение включено
extension=curl
( extentions=php_curl(.so|.dll)
или extentions="PATH/TO/php_curl(.so|.dll)"
также предлагается, возможно, для PHP <7.2)
Из PHP кажется, что библиотеки eay32
, ssh2
и ssleay32
также должны быть доступны по одному пути (С OpenSSL 1.1 eay32
был переименован crypto-*
и ssleay32
переименован ssl-*
). На Windows отвратительный хак - скопировать эти библиотеки из корневой папки PHP в папку system32
или wow64
. Лучшее решение состоит в том, чтобы изменить переменную пути так, чтобы она включала корневую папку PHP (лично я предпочитаю чистый путь, который я настраиваю по мере необходимости, но это PHP). На * nix-боксах кажется, что нужно просто установить php5-curl
пакет для своего дистрибутива.
Примечание: комментарии на странице PHP предполагают, что можно просто добавлять LoadFile "PATH/TO/lib(eay32|ssh2)|ssleay32.dll"
записи к ним, httpd.conf
но, cURL
похоже, ищет эти библиотеки по пути; спорить с предложением. Люди XAmpp / Wamp сходят с этого шага, поскольку они, похоже, сбрасывают свой собственный корень на системный путь.
После этого перезапустите Apache. Если вы используете монитор Apache, вам следует остановиться и запустить Apache; это создает новую среду для запуска службы (экономия при перезапуске).
Я не знаю, что необходимо для этого.