暂时禁用cURL以进行测试

时间:2011-10-28 10:26:58

标签: php curl

我正在编写一个类,用于检测cURL是否可用,如果是,则执行一项操作,如果不是,则执行另一项操作。因此,我需要知道如何暂时禁用cURL来测试这个类。我不想更改PHP INI文件。任何想法都非常赞赏。

只是想知道,我正在写一个替代方案,如果cURL是不可用的,这有多大可能?我在浪费时间吗? cURL通常可用吗?

6 个答案:

答案 0 :(得分:4)

php.ini中启用/禁用卷曲。您无法以其他方式启用和禁用它。

打开php.ini找到下面的内容并在它前面放一个半冒号来评论它:

extension=php_curl.dll 

答案 1 :(得分:3)

AFAIK在运行时无法执行此操作,因为在执行任何代码之前,在PHP启动期间会加载模块。唯一的方法是在php.ini中禁用(或者更确切地说,不启用)扩展。您可能甚至无法使用cURL执行此操作,因为它可能会被编译,而不是动态加载。

话虽如此 - 为什么不改变支票来测试你的“if not available”代码 - 大概你有一个像这样的块:

if (curl_exists()) { //obviously there is no such function, but you must have some condition that determines this
  // Do stuff using curl
} else {
  // Do something horrible
}

好吧,暂时将其改为:

if (!curl_exists()) {
  // etc etc

答案 2 :(得分:0)

我认为最好的选择是更改检测脚本以允许通过手动配置禁用它。

您无法动态禁用功能。你需要更改php.ini。

答案 3 :(得分:0)

http://www.php.net/manual/en/function.dl.php

dl - 在运行时加载PHP扩展

bool dl(string $ library)

加载参数库给出的PHP扩展名。

使用extension_loaded()来测试给定的扩展是否已经可用。这适用于内置扩展和动态加载(通过php.ini或dl())。

警告: 此函数已从PHP 5.3中的某些SAPI中删除。

<?php
// Example loading an extension based on OS
if (!extension_loaded('sqlite')) {  
    if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
        dl('php_sqlite.dll');
    } else {
        dl('sqlite.so');
    }
}
//this deals with sqlite but would be easy to figure out how to use it for cURL :)
?>

所以你可以在php.ini中注释掉cURL扩展的加载,然后在需要时“动态加载”它。

HTH

答案 4 :(得分:0)

可能最简单的方法是打开文件curl.ini,我使用ubuntu 12.04和文件位于

/etc/php5/apache2/conf.d/curl.ini

extension=curl.so之前添加分号发表评论 您可以通过phpinfo();

查看curl.ini的位置

别忘了重启Apache

sudo service apache2 restart

答案 5 :(得分:-1)

只要加载了它的扩展名(主要是默认情况下),就可以使用Curl。

您可以通过以下命令检查curl扩展名提供的内容:

php --re curl

给出了函数,类及其方法的列表。

要临时禁用curl扩展,您可以使用-n运行PHP,只是忽略您的php.ini,例如:

$ php -n -r "print_r(curl_version());"
Fatal error: Call to undefined function curl_version() in Command line code on line 1

以下是工作示例:

$ php -r "print_r(curl_version());"
Array
(
    [version_number] => 463623
...