2010-11-18 5 views
1

У меня есть вопрос о cURL. Я использую Curl с помощью этой функции:cURL не работает правильно!

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

только это вызывает ошибку: "Message: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION не может быть активирована, когда в safe_mode или open_basedir установлен"

Итак, я попросил моего хостинг-провайдера исправить это, и они это сделали. Но, и это действительно глупо, они помещают файл «curl» в мой каталог bin. И я не знаю, как включить это в свой php-скрипт: S.

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

Tnx in advanced!


Tnx для всех отличных ответов. Но как мне поместить «exec()» в этот код?

// create a new cURL resource 
    $ch = curl_init(); 

    // set URL and other appropriate options 
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    curl_setopt($ch, CURLOPT_TRANSFERTEXT, TRUE); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); 
    curl_setopt($ch, CURLOPT_URL, $articleUrl); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($ch, CURLOPT_MAXREDIRS, 5); 

    // grab URL and pass it to $grabArticle 
    $grabArticle = curl_exec($ch); 

Edit 2: Оке, я почти получил это работает :). Она работает нормально, когда я запускаю его в замазку, но в моем PHP скрипт ничего не происходит :(

я запускаю это:

$grabArticle = exec('/home/twittern/bin/curl -L -m 30 -w url_effective --max-redirs 5 http://fok.nl/415758'); 
echo $grabArticle; 

Все, что я делаю неправильно

+0

Итак, они только дали вам завиток? Похоже, они ожидают, что вы запустите его с помощью 'exec'. – JAL

+1

Повторите свое обновление, вам придется перестроить эти параметры в командной строке, см. Http://curl.haxx.se/docs/manpage.html –

+0

А, это F * cked up: S. Таким образом, это будет что-то вроде: $ grabArticle = exec ('/ home/twittern/bin/curl'. $ ArticleUrl. '-A -L '); – iSenne

ответ

3

Вместо использования встроенных функций cURL в PHP они просят вас использовать внешнюю версию командной строки.

Используйте функцию PHP exec() для вызова программы, параметры командной строки можно найти на curl man page.

Учитывая, что вам, вероятно, нужен ответ в полном объеме, вам может понадобиться использовать passthru() с буферизацией вывода или сохранить вывод в (временном) файле.

1

PHP локон Безразлично «т полагаться на завиток бен быть доступным. (PHP поддерживает завиток по умолчанию, так как 4.0.2)

Ваш хостинг-провайдер просто должен убедиться, что ваш PHP ини имеет safe_mode выключенной.

Но с учетом того, как это обрабатывается (давая вам скручиваемость), похоже, вы должны использовать exec() для его вызова.

Лично я рекомендую вам найти лучшего хоста.

+0

Согласитесь, но другой хост на самом деле не вариант :). – iSenne

1

Ваш провайдер отстой. Позвоните им и попросите их перекомпилировать php, чтобы включить поддержку завитка.

В противном случае вы застряли с вызовом curl напрямую.

$result = exec("/bin/curl http://www.foobar.com"); 
+0

У него есть поддержка завитка, только он имеет safe_mode или open_basedir. Если это общий хостинг, они вряд ли отключат эти меры безопасности по требованию. – Orbling

+0

Я согласен с Байроном. Сосать :(Действительно странно, потому что нормально они очень полезны. Это платформа для хостинга реселлера BTW :) – iSenne

+0

Самое смешное в том, что если они выйдут из безопасного режима, 'exec()' тоже не будет работать, будет ли он? –

Смежные вопросы