テスト目的でcURLを一時的に無効にする

私は、cURLが利用可能かどうかを検出するクラスを作成しています。ある場合はそれを行い、そうでない場合は別のものを行います。したがって、このクラスをテストするためにcURLを一時的に無効にする方法を知る必要があります。私はPHP INIファイルを変更したくありません。どんなアイデアも高く評価されました

ちょうど不思議、私はcURLがunavailbleである場合の代替手段を書いています、どのくらいの可能性がありますか?私は自分の時間を無駄にしていますか? cURLは通常利用できますか?

1

6 答え

Curlは php.ini で有効/無効に設定されています。他の方法でそれを有効または無効にすることはできません。

php.ini を開き、コメントを表示する前にセミコロンを置いてください。

extension=php_curl.dll 
4
追加された
Linuxでは、拡張子は curl.so である可能性が高いですが、扱う方法は変わりません。
追加された 著者 Wrikken,

AFAIKでは、実行時にこれを行う方法はありません。なぜなら、PHPの起動時に、コードが実行される前にモジュールがロードされるからです。これを実行する唯一の方法は、php.iniの拡張機能を無効にする(または有効にしない)ことです。 cURLを使っても、動的にロードされるのではなく、おそらくコンパイルされるので、これを行うことはできません。

あなたが "利用可能でない場合"のコードをテストするためにチェックを変更するだけではなく、おそらくあなたは次のようなブロックを持っているでしょう:

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
3
追加された

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
...
1
追加された

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

dl - 実行時にPHP拡張をロードする

bool dl(文字列$ライブラリ)

パラメータライブラリによって与えられたPHP拡張モジュールを読み込みます。

指定された拡張機能がすでに使用可能かどうかを調べるには、extension_loaded()を使用します。これは組み込みの拡張機能と動的に読み込まれた拡張機能(php.iniまたはdl()のいずれか)で動作します。

Warning: This function has been removed from some SAPI's in PHP 5.3.

<?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

0
追加された

おそらく最も簡単な方法はcurl.iniファイルを開くことです、私はubuntu 12.04を使用し、ファイルは

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

extension = curl.so の前にセミコロンを追加してコメントを残してください。 phpinfo()によってcurl.iniの位置を見ることができます。

Apacheを再起動するのを忘れないでください

sudo service apache2 restart
0
追加された

最良の選択肢は、検出スクリプトを手動設定で無効にできるように変更することだと思います。

あなたはその場で機能を無効にすることはできません。あなたはそのためにphp.iniを変更する必要があります。

0
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com