Временно отключите cURL для целей тестирования - PullRequest
1 голос
/ 28 октября 2011

Я пишу класс, который определяет, доступен ли cURL, делает одно, если оно есть, и другое, если нет. Поэтому мне нужно знать, как временно отключить cURL для проверки этого класса. Я не хочу менять файл PHP INI. Любые идеи высоко ценится.

Просто интересно, я пишу альтернативу, если cURL недоступен, насколько вероятно это? Я трачу свое время. CURL обычно доступен?

Ответы [ 6 ]

5 голосов
/ 28 октября 2011

Curl включен / отключен в вашем php.ini. Вы не можете включить или отключить его другим способом.

Откройте php.ini найдите ниже и поставьте точку с запятой перед комментарием:

extension=php_curl.dll 
3 голосов
/ 28 октября 2011

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
0 голосов
/ 29 февраля 2016

Curl доступен до тех пор, пока его расширение загружено (в основном это по умолчанию).

Вы можете проверить, что расширение curl предоставляет, с помощью следующей команды:

php --re curl

, который дает вам список функций, классов и их методов.

Чтобы временно отключить расширение curl, вы можете запустить PHP с -n, чтобы просто игнорировать ваш 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
...
0 голосов
/ 11 октября 2014

, вероятно, самый простой способ - открыть файл curl.ini, я использую ubuntu 12.04 и файл, расположенный по адресу

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

, оставьте комментарий, добавив точку с запятой перед extension=curl.so Вы можете увидеть расположение скручиванияИни через phpinfo ();

не забудьте перезапустить Apache

sudo service apache2 restart
0 голосов
/ 28 октября 2011

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

dl - загружает расширение PHP во время выполнения

bool dl (строка $ library)

Загружает расширение PHP, заданное библиотекой параметров.

Используйте extension_loaded (), чтобы проверить, доступно ли данное расширение или нет.Это работает как со встроенными расширениями, так и с динамически загружаемыми (через php.ini или dl ()).

Предупреждение : эта функция была удалена из некоторых SAPI в 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 :)
?>

Так что вы можете закомментировать загрузку расширения cURL в php.ini изатем «динамически загрузить» его при необходимости.

HTH

0 голосов
/ 28 октября 2011

Я думаю, что лучшим вариантом является изменение сценария обнаружения, чтобы разрешить его отключение с ручной настройкой.

Вы не можете отключить функцию на лету.Для этого вам нужно изменить php.ini.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...