2010-12-18 29 views
42

Hi Tôi cố gắng PHP Post Request inside a POST Request nghĩ nó có thể có ích cho tôi và mã của tôi được đưa ra dưới đâycurl_init() chức năng không làm việc

$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); 

dạng file index.php và index2.php là một tập tin trong cùng một thư mục và khi tôi mở trang tôi nhận được lỗi sau đây trong tập tin error.log tôi

[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 

gì tôi muốn làm là tôi có một hình thức đặt phòng mà gửi bài yêu cầu và sau đó tôi muốn xử lý bài giá trị và gửi lại gửi yêu cầu đến paypal

+1

có vẻ như thư viện curl không được kích hoạt –

+0

vâng tôi không thể tìm thấy curl trong phpinfo của tôi –

+0

tôi cũng không thể tìm thấy curl trong tập tin php.ini của mình –

Trả lời

109

Bạn cần cài đặt hỗ trợ CURL cho php.

Trong Ubuntu bạn có thể cài đặt nó qua

sudo apt-get install php5-curl 

Nếu bạn đang sử dụng apt-get thì bạn sẽ không cần phải chỉnh sửa bất kỳ cấu hình PHP, nhưng bạn sẽ cần phải khởi động lại Apache của bạn.

sudo /etc/init.d/apache2 restart 

Nếu bạn vẫn gặp sự cố, hãy thử sử dụng phpinfo() để đảm bảo CURL được liệt kê là đã cài đặt. (Nếu không, bạn có thể cần phải mở một câu hỏi khác, hỏi tại sao gói của bạn không cài đặt.)

Có hướng dẫn cài đặt trong PHP CURL documentation.

+0

user @ explorerx: ~ $ sudo apt-get cài đặt php5_curl Đọc danh sách gói ... Xong Xây dựng cây phụ thuộc Đọc thông tin trạng thái ... Hoàn thành E: Không thể tìm thấy gói php5_curl –

+0

đây là tên đúng php5-curl – RusAlex

+0

Tôi biết bạn đúng nhưng đó là php5-curl. Tôi đang làm điều đó chúng ta hãy xem –

18

Đối với Windows, nếu ai quan tâm, bỏ ghi chú dòng sau (bằng cách loại bỏ;) từ php.ini

;extension=php_curl.dll 

Khởi động lại máy chủ apache.

+1

Đối với người dùng XAMPP, php.ini này nằm trong/xampp/apache/php /. Các phiên bản cũ hơn có ở/xampp/apache/bin /. – Mave

+0

Đối với người dùng Ubuntu, [vị trí tệp php.ini được liệt kê tại đây] (http://askubuntu.com/a/356990/158714). Và lưu ý rằng có 2 tệp php.ini cho Apache và CLI (dòng lệnh) –

0

(Đang cố gắng để có được Curl làm việc thông qua PHP và Apache trên Windows ...)

tôi vẫn tiếp tục nhận được một lỗi nói: Gọi đến chức năng không xác định 'curl_init()'

Tôi chắc chắn tôi đã kích hoạt curl với dòng này trong tập tin php.ini của tôi: extension = php_curl.dll

tôi chắc chắn biến extension_dir đã được thiết lập đúng, như thế này: extension_dir = "ext"

Tôi đã làm tất cả mọi thứ mà mọi người khác nói trên diễn đàn và curl không hiển thị trong cuộc gọi của tôi tới phpinfo(), và tôi vẫn nhận được lỗi đó từ trên cao.

Cuối cùng tôi phát hiện ra rằng Apache theo mặc định sẽ tìm php.ini trong thư mục C: \ Windows. Tôi đã thay đổi php.ini trong thư mục cài đặt PHP của mình. Khi tôi sao chép php.ini của mình vào C: \ Windows, mọi thứ đã hoạt động.

Hãy để tôi mãi mãi để tìm ra điều đó, vì vậy tôi nghĩ rằng tôi sẽ đăng trong trường hợp nó giúp người khác.

0

RusAlex câu trả lời là đúng ở chỗ cho Apache bạn phải cài đặt và kích hoạt curl và khởi động lại dịch vụ apache của bạn:

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

On tôi Ubuntu Server với nginx và php5-fpm Tôi tuy nhiên chạy vào vấn đề sau. Tôi đã phải khởi động lại nginx và php5-fpm như vậy:

sudo service nginx restart 
sudo service php5-fpm restart 

Nhưng tôi đã trình php5-fpm không làm việc treo xung quanh, mà rõ ràng là một lỗi trong ubuntu https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1242376 Vì vậy, tôi phải giết tất cả php5- nhàn rỗi quá trình fpm để có thể khởi động lại php5-fpm để các mô-đun curl là thực sự nạp

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

để khắc phục lỗi này, tôi đã làm:

  1. Trong php.ini tập tin, bỏ ghi chú dòng này: extension=php_curl.dll
  2. Trong php.ini tập tin, bỏ ghi chú dòng này: extension_dir = "ext"
  3. tôi khởi động lại NetBeans, như tôi đã sử dụng Built-in máy chủ
+0

Điểm 2. là thứ đã sửa cho tôi. Cảm ơn!! – n00bAppDev

3

Trong trường hợp của tôi, trong Xubuntu, tôi phải cài đặt libcurl3 thư viện libcurl3-dev . Với lệnh này mọi thứ đều hoạt:

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

Đối với Ubuntu: thêm extension=php_curl.so để php.ini để kích hoạt, nếu cần thiết. Sau đó sudo service apache2 restart

đây là thường đưa về chăm sóc tự động, nhưng có những tình huống - ví dụ, trong các môi trường phát triển chung - nơi nó thể trở nên cần thiết để kích hoạt lại bằng tay.

Các vân tay sẽ phù hợp với tất cả ba điều kiện:

  1. Lỗi Fatal trên curl_init() gọi
  2. trong php_info, bạn sẽ thấy những tác giả mô-đun curl (chỉ curl được cài đặt và sẵn)
  3. cũng trong php_info, bạn sẽ thấy không có khối cấu hình curl (chỉ curl không được nạp)
1

Tôi gặp lỗi này khi sử dụng PHP7/Apache 2.4 trên nền tảng Windows. curl_init hoạt động từ CLI nhưng không hoạt động với Apache 2.4. Tôi đã giải quyết vấn đề này bằng cách thêm các chỉ thị LoadFile cho libeay32.dll và 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

function curl_int(); gây ra lỗi máy chủ, cài đặt sudo apt-get install php5-curl khởi động lại máy chủ apache2 ..nó sẽ làm việc như quyến rũ

0

câu trả lời này là dành cho yêu cầu https:

Curl không có built-in chứng chỉ gốc (giống như hầu hết trình duyệt hiện đại làm). Bạn cần trỏ rõ ràng tệp đó đến tệp cacert.pem:

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

Nếu không, curl này không thể xác minh chứng chỉ được gửi lại qua ssl. Có thể sử dụng cùng một tệp chứng chỉ gốc này mỗi khi bạn sử dụng SSL trong curl.

Bạn có thể nhận được các tập tin CAcert.pem đây: http://curl.haxx.se/docs/caextract.html

Reference PHP cURL Not Working with HTTPS

0

Chỉ cần thêm câu trả lời của tôi về vụ việc, nơi có nhiều phiên bản của PHP được cài đặt trong hệ thống của bạn, và bạn chắc chắn rằng bạn có đã cài đặt gói php-curl và Apache vẫn cung cấp cho bạn cùng một lỗi.

curl_init() undefined even if php-curl is enabled in Php 7.

Các vấn đề liên quan