Часова адключыць Curl для мэт тэставання

Я пішу клас, які вызначае, ці з'яўляецца Curl даступныя, робіць адну рэч, калі яна ёсць, і іншы, калі гэта не так. Таму мне трэба ведаць, як адключыць Curl часова пратэставаць гэты клас. Я не хачу, каб выправіць файл PHP INI. Любыя ідэі, высока цэніцца.

Проста цікава, Im пісаць альтэрнатыву, калі завіток немагчымы, як, верагодна, гэта? Ці магу я марнаваць свой час. Павівае звычайна даступныя?

1

6 адказы

Curl уключаны/выключаны ў вашым php.ini . Вы не можаце ўключыць і адключыць яго любым іншым спосабам.

Адкрыць php.ini знайсці ніжэй і паставіць кропку з коскай, перш чым каментаваць гэта:

extension=php_curl.dll 
4
дададзена
Звярніце ўвагу, што пашырэнне пад Linux, хутчэй за ўсё, curl.so , але спосаб лячэння гэта застаецца тым жа самым.
дададзена аўтар Wrikken, крыніца

AFAIK няма ніякага спосабу зрабіць гэта падчас выканання, так як модулі загружаюцца падчас запуску PHP, перш чым любы з вас кода выконваецца. Адзіны спосаб зрабіць гэта шляхам адключэння (ці, дакладней, не дазваляе) пашырэнне ў php.ini. Вы, верагодна, не можа нават зрабіць гэта з завітак, як гэта, верагодна, будзе скампіляваны ў не адлюструецца дынамічна.

Сказаўшы, што - чаму б не проста змяніць праверку, каб праверыць свае «калі не будзе» код - меркавана, у вас ёсць блок нешта накшталт гэтага:

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 даступны датуль, загружаецца яго пашырэнне (які ў асноўным па змаўчанні).

Вы можаце праверыць, што завіток пашырэнне забяспечвае з дапамогай наступнай каманды:

php --re 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
...
1
дададзена

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

дл - Загружае пашырэнне PHP падчас выканання

BOOL дл (радок $ бібліятэка)

Загружае пашырэнне PHP зададзенага бібліятэкі параметраў.

Выкарыстоўвайце extension_loaded (), каб праверыць, ці з'яўляецца ўжо даступна дадзенае пашырэнне ці не. Гэта працуе на абодвух ўбудаваных пашырэньні і дынамічна загружаных з іх (альбо праз php.ini або дл ()).

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

Такім чынам, вы можаце закаментаваць загрузку пашырэння CURL ў php.ini і пры неабходнасці затым «дынамічна загружаць» яго.

НТН

0
дададзена

верагодна, самы просты спосаб з'яўляецца адкрытай curl.ini файла, Im выкарыстанне убунту 12.04 і файл, размешчаны ў

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

пакінуць каментар, дадаўшы кропку з коскай перад пашырэнне = curl.so Вы можаце ўбачыць размяшчэнне curl.ini праз phpinfo ();

не забудзьцеся перазапусціць Apache

sudo service apache2 restart
0
дададзена

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

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

0
дададзена