Сынақ мақсатында cURL уақытша өшіру

Мен cURL қол жетімді екендігін анықтайтын сыныпты жазамын, егер ол бар болса бір нәрсе жасайды және басқасы болмаса. Сондықтан осы сыныпты сынау үшін cURL уақытша өшіру әдісін білу керек. PHP INI файлын өзгерткім келмейді. Кез келген идеялар өте жоғары бағаланды.

Бір қызығы, егер мен cURL-ны алмасаңыз, альтернатива жазамын, бұл қаншалықты мүмкін? Мен уақытты ысырап етемін. 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

ол сізге функцияларды, сыныптарды және олардың әдістерінің тізімін береді.

Бұзу кеңейтілуін уақытша өшіру үшін php.ini сөзін елемеу үшін PHP-ды -n -бен іске қосуға болады, мысалы:

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

Сонымен, сіз cURL кеңейтімін php.ini файлына жүктеуді түсіндіріп, қажет болғанда «динамикалық түрде жүктеп» аласыз.

HTH

0
қосылды

Мүмкін, ең қарапайым тәсілі ашық файлмен curl.ini, Im Ubuntu 12.04 және файл орналасқан

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

extension = curl.so алдында нүктелі үтірді қосып, түсініктеме қалдырыңыз Curl.ini файлын phpinfo() арқылы көре аласыз;

Apache-ді қайта іске қосуды ұмытпаңыз

sudo service apache2 restart
0
қосылды

Ең жақсы нұсқа - қолмен конфигурациялаумен өшіруге мүмкіндік беретін анықтау сценарийін өзгерту.

Функцияны ұшқында өшіре алмайсыз. Бұл үшін php.ini файлын өзгерту керек.

0
қосылды