Тимчасово вимкніть 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 з -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

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, я використовую 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
додано
Ukrainian PHP comunity
Ukrainian PHP comunity
885 учасників

dev-ua/php