2009-08-27 28 views
29

Cập nhật: Sự cố dường như đã bị hỏng DLL ở đâu đó trong bản cài đặt PHP của tôi hoặc có thể là lỗi trong PHP 5.2.9 trên Win2k. Tôi đã tải xuống bản phân phối windows (nhị phân) của PHP 5.2.10 từ php.net và trích xuất nó vào thư mục c: \ PHP của tôi. Sau khi làm điều đó, mọi thứ đều ổn.Làm cách nào để CURL hoạt động với PHP trên Windows? (WAMP)

Update2: Tôi phá hoại tất cả những gì tôi đã cố gắng trước đó (tất cả mọi thứ từ các gạch đầu dòng danh sách dưới đây), trừ rằng tôi rời "extension=php_curl.dll" không chú thích trong file php.ini của tôi. Nó chỉ ra rằng đó là tất cả các bạn cần phải làm trong một cài đặt thích hợp.


Tôi đang cố gắng để CURL hoạt động trên bản cài đặt Windows của PHP (phiên bản 5.2.9-2) và tôi kết thúc bằng wit. Tôi đã tìm thấy the PHP CURL installation page, this SO question tham chiếu this pagethis SO question. Tôi đã thử hầu hết các đề xuất trong tất cả các trang đó nhưng tôi vẫn gặp lỗi. Đây là trang kiểm tra rất đơn giản của tôi:

<?php 
$ch = curl_init(); 
?> 
<b>Success!</b> 

này mang lại cho tôi:

Fatal error: Lệnh gọi hàm curl_init không xác định() trong C: \ ApacheRoot \ curltest.php trên đường dây

Trong log lỗi Apache của tôi, tôi có được điều này mỗi khi máy chủ bắt đầu:

PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\PHP\\ext\\php_curl.dll' - The specified procedure could not be found.\r\n in Unknown on line 0

Tôi đã làm như sau:

  • không chú thích dòng sau trong php.ini: extension=php_curl.dll
  • sao chép ssleay32.dlllibeay32.dll từ C: \ PHP để C: \ WINNT \ System32
  • Đã tải xuống cURL cho Win32 từ curl.haxx.se và trích xuất tệp .zip thành C: \ cURL
  • Đã thêm C:\cURL vào biến môi trường PATH của hệ thống của tôi.
  • đã xác minh rằng:
    • php.ini bao gồm extension_dir="C:\PHP\ext"
    • Thư mục C:\PHP\ext chứa php_curl.dll
    • Các chỉ php.ini tập tin trên hệ thống của tôi là trong C:\PHP (ví dụ đặc biệt là không có C:\WINNT\php.ini)
    • Các Tệp Apache httpd.conf bao gồm dòng PHPIniDir "C:/PHP/"

Tôi cũng đã khởi động lại máy (nhiều lần, trên thực tế ...).

+0

Đầu ra phpinfo() của bạn cho phần mở rộng và biến môi trường/đường dẫn là gì? – JYelton

+0

Xác minh rằng (ngoài phần trên), PHP thực sự đang tải phần mở rộng cURL. Làm điều này bằng cách nhìn vào đầu ra của ' '. Nên có một khối có tiêu đề ** curl **. Nếu không, thì nó thực sự không được tải vì một lý do nào đó. – Nate

+0

@Nate: không có phần curl trong phpinfo() – Kip

Trả lời

9

Bạn không phải khởi động lại máy tính, chỉ cần khởi động lại apache và mô-đun php sẽ đọc ini mới.
Bạn có thay đổi đúng php.ini không? Trong trường hợp nghi ngờ

<?php echo 'php.ini: ', get_cfg_var('cfg_file_path'); ?> 

có thể cho bạn biết.

Có điều gì đó trong error.log của apache chỉ ra rằng đã xảy ra sự cố khi tải php và php_curl.dll không?

Bạn có bắt đầu apache dưới dạng dịch vụ win32 không? Nếu bạn đã cố gắng khởi động nó như một ứng dụng giao diện điều khiển. Thông báo lỗi sẽ hiển thị trên bảng điều khiển sau đó. Hoặc khởi động dịch vụ dưới dạng dịch vụ và xem tệp error.log nhật ký sự kiện của cửa sổ (bắt đầu, chạy, eventvwr.msc /s).

chỉnh sửa:
"Không thể tìm thấy quy trình được chỉ định"
Bạn cần một dll tương thích với phiên bản php và bản dựng. Chính xác những gì bạn đã cài đặt và bạn đã lấy nó từ đâu?

+0

Mã mẫu xuất ra 'php.ini: C: \ PHP \ php.ini', đây là phần tôi đã chỉnh sửa. Tôi đã cập nhật câu hỏi với lỗi từ error.log của Apache. Không có gì liên quan trong trình xem sự kiện hệ thống. – Kip

+0

chấp nhận điều này bởi vì bạn đã bắt đầu một con đường khác dẫn đến giải pháp. cảm ơn đã giúp đỡ. – Kip

+3

Kip, bạn có thể vui lòng đăng giải pháp mà bạn đã tìm thấy không? Ai đó nhìn vào câu hỏi này trong tương lai có thể không hiểu bạn đã làm gì để sửa nó. –

7

Hãy thử điều này:

  1. Dừng WAMP hoàn toàn.
  2. Tìm thư mục wamp của bạn: C: \ path \ to \ wamp \ bin \ Apache \ ApacheVersion \ bin \
  3. Chỉnh sửa php.ini và mở rộng bỏ ghi chú = php_curl.dll
  4. Restart WAMP.

Điều đó hy vọng sẽ giải quyết được.

* EDIT: Làm tương tự điều @ C: \ path \ to \ wamp \ bin \ php \ PHPVersion \

+1

Với WAMP Server, bạn có thể thực hiện tất cả thông qua menu thanh trạng thái mà không phải mở php.ini. – Matt

+0

Khi đọc câu hỏi này ban đầu tôi muốn đề xuất biểu tượng trình đơn khay hệ thống để thêm phần mở rộng cho PHP, tuy nhiên thuật ngữ "WAMP" cũng có nghĩa là cài đặt Windows, Apache, MySQL và Windows, và không nhất thiết phải là gói có sẵn từ http://www.wampserver.com - vì vậy tôi đã tổ chức đề xuất mở rộng thanh thực đơn. – JYelton

+0

@JYelton có, bạn đã chính xác, các bộ phận A/M/P đã được cài đặt riêng, không phải cài đặt gói. – Kip

1

Đây là những gì làm việc cho tôi

Giải đáp của Soren từ một SO chủ đề - CURL for WAMP

"Có vẻ như có lỗi ở đâu đó. Nếu bạn đang gặp vấn đề này trên Win 7 64 bit, hãy thử cài đặt phiên bản bổ sung apache 2.2.9 và phiên bản addon php 5.3.1 và chuyển sang WAMP rồi kích hoạt phần mở rộng CURL. Điều đó làm việc cho tôi. "

1

này cố định nó cho tôi:

Đến đây:

http://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/

Tải 'php_curl-5.3.13-VC9-x64.zip'

Dừng WAMP Server từ Running

Trích xuất tệp 'php_curl.dll'.

Trên máy tính địa phương của bạn, duyệt đến (hoặc trong trường hợp cài đặt WAMP của bạn được tìm thấy) c: \ wamp \ bin \ php \ php5.3.13 \ ext

Rename php_curl.dll để php_curl.dll.old (hoặc bất cứ điều gì bạn chọn) và sau đó sao chép tệp mới vào thư mục ở trên.

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

Tất cả sẽ hoạt động bình thường.

0

Nếu sự cố vẫn tiếp diễn sau khi bạn bỏ ghi mô-đun khỏi cả tệp php.ini (mọi người đang nói và nằm trong thư mục apache và thư mục php) và thậm chí sau khi bạn kiểm tra xem bạn có php_curl.dll không * * tại

C: \ wamp \ bin \ php \ php5.3.13 \ ext

bạn nên cố gắng thay thế các DLL ORIGINAL mà đi kèm với WAMPSERVER với một từ trang web này:

http://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/

Vấn đề của tôi là có! Hy vọng điều đó sẽ hữu ích.

1

Tôi gặp sự cố tương tự với php-5.5.26-Win32-VC11-x64 (trên Windows) và tôi đã thử mọi thứ được liệt kê tại đây mà không có may mắn. Cuối cùng tôi đã làm cho nó hoạt động bằng cách thêm PHP installation directory to windows Path.

+0

Đây là điều duy nhất làm việc cho tôi. Sử dụng PHP 5.5.12 và Apache 2.4.9 – Mark

1

Với PHP 5.6.9 trên Windows Server Core 2012 x64 cURL không hoạt động, không hiển thị trong phpinfo mặc dù phần mở rộng php_curl.dll không bổ sung trong tệp php.ini của tôi và khởi động lại dịch vụ Apache 2.4. Đã thêm đường dẫn php và đường dẫn php \ ext vào đường dẫn $ evn: của tôi. Không vui.

Khắc phục: Tôi không cần phải tải xuống bất kỳ tệp php_curl.dll nào khác và không thể tìm thấy tệp nào cho PHP 5.6. Có gì cuối cùng làm việc là để sao chép ba file vào thư mục Apache24 \ bin sau đó khởi động lại Apache:

libeay32.dll

libssh2.dll

ssleay32.dll Sao chép này để hệ thống hoặc System32 là không cần thiết .

+1

Điều này cũng làm việc cho PHP7. Và lưu ý rằng đã có libeay32.dll và ssleay32.dll trong thùng của apache. Tôi đã phải thay thế chúng để làm cho nó hoạt động. – todinov

+0

Điều này chỉ làm việc cho tôi bằng cách sử dụng Apache 2.4 và PHP 7.0.3, cảm ơn! – Behrens

+0

Không cần phải sao chép các tập tin, thiết lập đường dẫn đúng cách sẽ làm việc NHƯNG nếu bạn đã có libeay32.dll và ssleay32.dll trong bin của apache bạn phải tiêu diệt chúng. Trong trường hợp của tôi, tôi nâng cấp từ 5,6 lên 7 và đã chạy Apache 2.4, mà tôi không muốn thay đổi. Sau khi thay đổi tất cả các thư mục để trỏ đến php 7 curl không hoạt động, và đường dẫn đã được thiết lập đúng, nhưng các tập tin trên đã được tìm thấy trong thư mục apache, vì vậy curl dll không bao giờ tìm kiếm thư mục PHP cho đúng. –

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