Answers:
WordPress网站的大部分工作都没有问题,但该网站的仪表板部分存在更新或安装问题。当我尝试安装主题时,出现错误“安装失败:下载失败。找不到有效的传输”。
幸运的是,我通过以下解决方案解决了该问题。
事实证明,当开发服务器上缺少扩展名时,会出现此错误消息,因此WordPress无法发出外部HTTP请求。
解决方案非常简单。Wamp Server已安装了使那些HTTP请求成为可能的缺少扩展,默认情况下,它们只是被禁用。要启用它们,我们需要编辑php.ini配置文件。
编辑php.ini文件
php.ini文件包含许多扩展的列表,其中某些扩展默认情况下处于禁用状态。我唯一需要启用的是openssl扩展。
以下是启用该扩展程序的步骤:
就是我们完成了!!!
WordPress HTTP API的构建方式使其可以在许多服务器上运行,并尝试了不同的方式(传输方式)。
根据错误消息,没有可用的传输,因此WordPress无法发出任何传出的HTTP请求。
我建议您安装类似Core Control WordPress插件的插件,该插件可让您调试所有现有的HTTP传输。在一种传输方式不起作用的情况下,很有可能另一种传输方式也可以。此插件可让您禁用已损坏的插件,并使用新的传输工具测试HTTP API。
如果事实证明确实没有任何一种传输方式有效,则应与主机提供商联系,至少在服务器上安装cURL之类的东西,以便可以在PHP中发出HTTP请求。
关于此错误消息的建议是多种多样的,并且似乎没有人提供全面的答案(请参阅一些博客,一个重复的答案,以及此处的此处和此处)。希望这是对这个问题的更正式的看法。
我认为只有WordPress可以通过Apache在PHP上使用WordPress(由于我还没有在PHP上尝试过,因此我目前无法对NginX进行评论,也无法对其他框架进行评论)。答案可能是对Windows 10的偏见,其中包括自建的Apache 2.4.37,提取的线程安全PHP 7.2和WordPress4.2.X。
PHP和cURL可能很好地说明了这一点,那就是WordPress依赖于Requests
,cURL
并围绕和fSockets
库进行包装。Requests
倾向于使用该cURL
库(如果有的话),但是应该会退回到该fSockets
库以下载Plugins / Themes / etc。“无传输”错误表示没有在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。这为服务运行设置了一个新环境(为您节省了重启时间)。
我不知道要进行此操作有什么必要。