【问题标题】:PHPUnit not recognizing cURL extension -- can't install selenium testPHPUnit 无法识别 cURL 扩展 - 无法安装 selenium 测试
【发布时间】:2012-01-19 17:13:07
【问题描述】:

我在运行 WAMPserver 的 Windows 7 机器上,我正在尝试为 PEAR 安装 Selenium 扩展。但是,每当我尝试安装它时,都会被告知它需要已经启用的 PHP 扩展“curl”:

pear install phpunit/PHPUnit_Selenium

Package "pear.phpunit.de/PHPUnit_Selenium" dependency "pear.phpunit.de/PHPUnit" has no releases
phpunit/PHPUnit_Selenium requires PHP extension "curl"
No valid packages found
install failed

所以我去检查我的 php.ini 文件,看看它是否已启用。果然来了:

extension=php_apc.dll
;extension=php_bz2.dll
extension=php_curl.dll
;extension=php_dba.dll
;extension=php_exif.dll

在this website,有人告诉我试试这个:

  1. 如果您收到“未找到有效软件包安装失败”错误,请运行以下命令 pear upgrade-all

但是当我运行该命令时,它只会告诉我Nothing to upgrade-all。

搜索我的具体错误后,发现PHP bug that mentions

“curl”php 扩展需要加载到 php 本身作为 扩展名。

运行这个命令

php -me

如果“curl”没有被列为 [PHP 模块] 之一,它不会 工作。

而且我不完全确定如何在 Windows 上将此“作为扩展加载到 php 本身”。是否有捷径可寻?或者让 PEAR 相信我确实安装了这个?

编辑

为了记录,我的 curl 扩展 被 PHP 注意到了(来自 php_info()):

cURL support    enabled
cURL Information    7.20.0

【问题讨论】:

  • 您能通过php --ini | grep curl 排除php.ini 网络服务器与cli 的问题吗?
  • @edorian 运行该命令没有返回任何结果。当我运行php --ini(也没有任何其他扩展)时,没有提到 curl。
  • @edorian -- 不用担心! php --ini 告诉我 Loaded Configuration File: C:\wamp\bin\php\php5.3.5\php.ini 这是我上面提到的 php.ini 文件,其中包含 php_curl.dll 扩展名。
  • @edorian php -i 实际上 不 显示 curl 扩展。 Error_reporting 已打开。但是,确实显示 curl 扩展名的是从我的 Web 目录的根目录调用的 php_info() 函数。
  • 这就是为什么我怀疑某种 web 与 cli 配置问题。也许这会让你到达某个地方:)

标签: curl selenium phpunit wamp pear


【解决方案1】:

在大多数情况下,我会说这来自 php 配置问题。

检查这一点的最简单方法是使用php -i 并查看 curl 扩展名是否显示在输出中。如果没有,则命令行 php.ini 有问题。它可能使用了错误的php.ini 文件。 php --ini可以用来检查这个


但可能存在由于某种原因不想或无法启用 curl 扩展的情况,因此我将其作为答案:

如果你不需要 phpunit 的 selenium 模块,有一种方法可以跳过安装这个包,因为它是一个可选的依赖项。

pear install --onlyreqdeps phpunit/phpunit 

不应安装 Selenium。

并且以防万一总是要尝试一件事:

pear install --force --alldeps phpunit/phpunit

要告诉 pear 注意 curl 扩展名不被识别有:

pear install --force phpunit/PHPUnit_Selenium

如果有一些问题只是 pear 没有选择扩展,但正常的脚本是,这可能会起作用。

【讨论】:

  • 不幸的是,我正在尝试专门安装 selenium 扩展并且已经安装了 PHPUnit。
  • 也许使用 --force 来安装它,看看它是否有效,然后对你有用吗?
  • 强制安装工作得很好。感谢所有的帮助! :D
【解决方案2】:

在使用 WAMP 时,有两个 php.ini 文件

  1. Apache 下
  2. 在 PHP 下

确保您在两个文件中都取消了 "extension=php_curl.dll" 的注释。编辑这两个文件并重新启动您的 wamp 服务器后,您就很好了。即使您的 wamp 服务器使用的是 Apache 版本,pear 安装程序也可能会在 PHP 路径中查找 curl 设置。

【讨论】:

    【解决方案3】:

    需要对不同位置的两个php.ini进行修改,例如:

    1. C:\wamp\bin\php\php5.3.8
    2. C:\wamp\bin\apache\Apache2.2.21\bin

    从第 950 行开始,您会看到

    ; Windows Extensions
    ; Note that ODBC support is built in, so no dll is needed for it.
    ; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)
    ; extension folders as well as the separate PECL DLL download (PHP 5).
    ; Be sure to appropriately set the extension_dir directive.
    ; 
    ;extension=php_bz2.dll
    ;extension=php_curl.dll
    ;extension=php_dba.dll
    ;extension=php_exif.dll
    ...
    

    将“;extension=php_curl.dll”改为“extension=php_curl.dll”

    重启你的服务器,你应该准备好了。

    【讨论】:

    • 我的问题似乎最终出在 Pear 上,而不是 ini 文件上。
    • 好的,谢谢。 edorian 的回答是让我到达那里的原因:stackoverflow.com/a/8496478/390977
    【解决方案4】:

    当您从 wamp 服务器甚至从 php 菜单更改 php.ini 时,它会更改 apache 版本并且它根本不会影响 php。我从文件系统中更改了它们,它可以工作。 :-)

    【讨论】:

      【解决方案5】:

      我在 Ubuntu 上遇到过这个问题,我通过运行以下命令解决了这个问题,

      sudo apt-get install php5-curl

      显然有两种不同的 curl 包(curl 和 php5-curl),其中一个 php5-curl 用于 php。

      希望对你有帮助

      【讨论】:

        【解决方案6】:

        我按照上面的这些答案更改了这些文件并且工作正常。

        C:\wamp\bin\php\php5.3.13
        C:\wamp\bin\apache\apache2.2.22\bin
        

        【讨论】:

          猜你喜欢
          • 2013-04-14
          • 1970-01-01
          • 2011-01-08
          • 2017-11-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-02-24
          相关资源
          最近更新 更多