2010-12-18 12 views
42

Witam próbuje PHP Post Request inside a POST Request myśli to może być przydatne dla mnie i mojego kodu jest podana poniżejcurl_init() nie działa

$sub_req_url = "http://localhost/index1.php"; 

$ch = curl_init($sub_req_url); 
$encoded = ''; 

// include GET as well as POST variables; your needs may vary. 
foreach($_GET as $name => $value) { 
    $encoded .= urlencode($name).'='.urlencode($value).'&'; 
} 

foreach($_POST as $name => $value) { 
    $encoded .= urlencode($name).'='.urlencode($value).'&'; 
} 

// chop off last ampersand 
$encoded = substr($encoded, 0, strlen($encoded)-1); 

curl_setopt($ch, CURLOPT_POSTFIELDS, $encoded); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_exec($ch); 
curl_close($ch); 

formie pliku index.php i index2.php jest inny plik w tym samym katalogu i kiedy otworzyć stronę i pojawia się następujący błąd w moim error.log pliku

[Sat Dec 18 15:24:53 2010] [error] [client ::1] PHP Fatal error: Call to undefined function curl_init() in /var/www/testing1/index.php on line 5 

co chcę zrobić, to mam formularz rezerwacji które wysyłają żądania POST, a następnie chcę przetwarzać wartości pocztowe i wysłać ponownie po przesłaniu prośby do paypal

+1

wygląda na to, że biblioteka curl nie jest włączona –

+0

tak, nie mogę znaleźć curl w moim phpinfo –

+0

również nie mogę znaleźć curl w moim pliku php.ini –

Odpowiedz

109

Musisz zainstalować obsługę CURL dla php.

W Ubuntu można zainstalować go poprzez

sudo apt-get install php5-curl 

Jeśli używasz apt-get wtedy nie będzie trzeba zmieniać żadnej konfiguracji PHP, ale trzeba będzie zrestartować Apache.

sudo /etc/init.d/apache2 restart 

Jeśli nadal się problemów, a następnie spróbować skorzystać phpinfo(), aby upewnić się, że CURL jest wymieniony jako zainstalowany. (Jeśli tak nie jest, być może trzeba będzie otworzyć kolejne pytanie, pytając, dlaczego pakiety nie instalują się.)

W instrukcji znajduje się instrukcja instalacji PHP CURL documentation.

+0

użytkownik @ explorerx: ~ $ sudo apt-get install php5_curl Czytanie list pakietów ... Gotowe Drzewo zależności budynku Czytanie informacji o stanie ... Wykonano E: Nie można znaleźć pakietu php5_curl –

+0

To jest poprawna nazwa php5-curl – RusAlex

+0

Mam rację, ale masz rację, ale to php5-curl. Robię to, zobaczmy –

18

Dla systemu Windows, jeśli ktoś jest zainteresowany, odkomentuj następującą linię (poprzez usunięcie;) od php.ini

;extension=php_curl.dll 

restart serwera apache.

+1

Dla użytkowników XAMPP to php.ini znajduje się w twoim/xampp/apache/php /. Starsze wersje mają go w/xampp/apache/bin /. – Mave

+0

Dla użytkowników Ubuntu [tutaj wymienione są lokalizacje plików php.ini] (http://askubuntu.com/a/356990/158714). Zauważ, że istnieją 2 pliki php.ini dla Apache i CLI (linia poleceń) –

0

(Próbuje Curl działa poprzez PHP i Apache na Windows ...)

Ciągle otrzymuję błąd mówiąc: wywołanie funkcji nieokreślonej 'curl_init()'

Zrobiłem pewien miałem włączona pozwijane z tej linii w moim pliku php.ini: extension = php_curl.dll

zrobiłem pewien zmienna extension_dir był ustawiony prawidłowo, tak: extension_dir = "eXT"

Robiłem wszystko, co inni mówili na forach, a curl nie pojawiał się w moim wywołaniu funkcji phpinfo(), i ciągle otrzymywałem ten sam błąd z góry.

W końcu dowiedziałem się, że Apache domyślnie szuka pliku php.ini w folderze C: \ Windows. Zmieniłem php.ini w moim folderze instalacji PHP. Po skopiowaniu pliku php.ini do C: \ Windows wszystko działało.

Zajęło mi to na zawsze, aby to rozgryźć, więc pomyślałem, że opublikuję na wypadek, gdyby pomógł komuś innemu.

0

RusAlex odpowiedź ma rację, że dla Apache trzeba zainstalować i włączyć curl i uruchom ponownie usługę apache:

sudo apt-get install php5-curl 
sudo service apache2 restart 

na moim serwerze Ubuntu z nginx i PHP5-FPM ja jednak wpadł następujący problem. Musiałem restart nginx i PHP5-FPM tak:

sudo service nginx restart 
sudo service php5-fpm restart 

ale miałem procesy PHP5-FPM zakaz pracy kręci, co najwyraźniej jest to błąd w ubuntu https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1242376 Więc musiałem zabić wszystkich bezczynności php5- procesy FPM w stanie restart php5-fpm żeby moduł curl jest właściwie załadowany

sudo kill <Process Id of php5-fpm Process) 
1

aby rozwiązać ten problem, zrobiłem:

  1. W php.ini pliku, odkomentuj tej linii: extension=php_curl.dll
  2. W php.ini pliku Odkomentuj ta linia: extension_dir = "ext"
  3. I wznowiona NetBeans, jak używałem Wbudowany serwer
+0

Punkt 2. jest to, co naprawiono dla mnie. Dzięki!! – n00bAppDev

3

W moim przypadku, Xubuntu, musiałem zainstalować libcurl3 bibliotek libcurl3-dev . Za pomocą tego polecenia wszystko działało:

sudo apt-get install curl libcurl3 libcurl3-dev php5-curl 
4

dla Ubuntu: dodać extension=php_curl.so do php.ini, aby umożliwić w razie potrzeby. Następnie sudo service apache2 restart

to ogólnie załatwione automatycznie, ale istnieją sytuacje - na przykład w udostępnionych środowiskach programistycznych - gdzie może stają się niezbędne, aby ponownie włączyć ręcznie.

odcisk palca dopasuje wszystkie trzy z tych warunków:

  1. Fatal Error na curl_init() zadzwonić
  2. w php_info, widać wywinięcia modułu Autor (wskazując curl jest zainstalowany i dostępny)
  3. również w php_info, widać zagięcia blok konfiguracyjny (wskazując curl nie został załadowany)
1

Mam ten błąd przy użyciu PHP7/Apache 2.4 na platformie Windows. curl_init pracował z CLI, ale nie z Apache 2.4. Postanowiłem go dodając LoadFile dyrektywy dla libeay32.dll i ssleay32.dll:

LoadFile "C:/path/to/Php7/libeay32.dll" 
LoadFile "C:/path/to/Php7/ssleay32.dll" 
LoadFile "C:/path/to/Php7/php7ts.dll" 
LoadModule php7_module "C:/path/to/Php7/php7apache2_4.dll" 
0

funkcja curl_int(); przyczyną błędu serwera, zainstaluj sudo apt-get install php5-curl restart serwera apache2 ..to będzie działać jak czar

0

Ta odpowiedź jest na żądanie https:

Curl nie posiada wbudowanej certyfikatów głównych (jak większość nowoczesnych przeglądarce zrobić). Trzeba wyraźnie podkreślić je do pliku cacert.pem:

curl_setopt($ch, CURLOPT_CAINFO, '/path/to/cert/file/cacert.pem'); 

Bez tego, curl nie może zweryfikować certyfikatu odsyłany przez SSL. Ten sam plik certyfikatu głównego może być używany za każdym razem, gdy używasz SSL w curl.

Możesz pobrać plik cacert.pem tutaj: http://curl.haxx.se/docs/caextract.html

Reference PHP cURL Not Working with HTTPS