Hướng dẫn extension php_curl dll

  • Techblog
  • Thủ thuật

Nếu bạn đang làm việc với một số mã PHP sử dụng cURL và nhận thấy cURL không được kích hoạt trên máy chủ Windows của bạn. Lỗi sẽ xuất hiện như sau:

Fatal error: Call to undefined function curl_init[]

Tuy nhiên, có một tin tốt là PHP libcurl được gói trong cài đặt Windows PHP theo mặc định, và chỉ cần kích hoạt là có thể chạy được.

Tài liệu chính thức về PHP mô tả libcurl library như sau:

"... một thư viện được Daniel Stenberg sang lập, cho phép bạn kết nối và giao tiếp với nhiều loại máy chủ khác nhau, sử dụng nhiều loại giao thức khác nhau."

Libcurl library thường được sử dụng trong PHP khi thực hiện gọi API đến web servers, và có thể bạn đang cố gắng làm điều này với code của mình.

Kích hoạt cURL trong Windows

Trước tiên, bạn sẽ cần biết vị trí của tệp php.ini trong server và cần quyền truy cập để chỉnh sửa.

Nếu bạn không biết vị trí của php.ini, bạn có thể làm theo các bước từ 1-3 trong phần dưới để xác định vị trí file. Còn nếu bạn đã biết php.ini nằm ở đâu, Bizfly Cloud xin hướng dẫn bạn bước 4 sau đây.

1. Tạo một tệp info.php mới trên web server. Cóp đoạn sau vào tệp và lưu:

2. Sử dụng web browser để mở info.php

Nếu PHP được cấu hình đúng cách, bạn sẽ thấy một loạt các thông tin cấu hình được hiển thị.

3. Tìm mục cài đặt Loaded Configuration File và hãy lưu ý tới các giá trị cài đặt. Đây là vị trí của tệp php.ini.

Ví dụ: vị trí có thể có dạng: C:\php5.6.30 \ php.ini

Tiếp theo đây, chúng ta cần chỉnh sửa tệp php.ini và kích hoạt phần mở rộng libcurl.

4. Mở tệp php.ini trong trình soạn thảo văn bản text editor

5. Tìm php_curl

Bạn cần tìm một dòng tương tự như dòng sau:

;extension=php_curl.dll

Dòng lệnh được ghi chú bởi dấu ";" ở đầu dòng.

Bỏ ghi chú dòng [loại bỏ dấu ";" ở trước], làm như sau:

Lưu ý: bạn có thể cần đặt đường dẫn đầy đủ đến php_curl.dll trong thư mục ext, và thư mục này nằm trong bản cài đặt PHP, ví dụ:

extension=C:\php5.6.30\ext\php_curl.dll

Lưu các thay đổi trong php.ini

Khởi động lại dịch vụ httpd trong Apache

Tải lại info.php trong web browser và tìm curl

Bạn có thể sẽ tìm thấy một dòng như sau:

Nguồn: Bizfly Cloud chia sẻ

>> Có thể bạn quan tâm: Lỗi PHPMyAdmin – "Access Denied Unable to establish a PHP session"

BizFly Cloud là nhà cung cấp dịch vụ điện toán đám mây với chi phí thấp, được vận hành bởi VCCorp.

BizFly Cloud là một trong 4 doanh nghiệp nòng cốt trong "Chiến dịch thúc đẩy chuyển đổi số bằng công nghệ điện toán đám mây Việt Nam" của Bộ TT&TT; đáp ứng đầy đủ toàn bộ tiêu chí, chỉ tiêu kỹ thuật của nền tảng điện toán đám mây phục vụ Chính phủ điện tử/chính quyền điện tử.

Độc giả quan tâm đến các giải pháp của BizFly Cloud có thể truy cập tại đây.

DÙNG THỬ MIỄN PHÍ và NHẬN ƯU ĐÃI 3 THÁNG tại: Manage.bizflycloud

libeay32.dllssleay32.dllphải có đường dẫn để php_curl.dlltải thành công.

Nhưng sao chép chúng vào của Apache ServerRoot, Apache \bin\, Window \System32\, hoặc thậm chí tệ hơn vào thư mục chính của Windows là một cách hack tồi tệ và thậm chí có thể không hoạt động với các phiên bản PHP mới hơn.

Cách làm đúng là thêm đường dẫn PHP vào Pathbiến Windows .

  1. Trong Control Panel -> Systemnhấp chuột vào Advanced System Cài đặt hoặc bấm WIN+ Rvà loạiSystemPropertiesAdvanced
  2. Nhấp vào nút Biến môi trường .
  3. Trong Biến hệ thống, bạn sẽ tìm thấy Pathbiến. Chỉnh sửa nó và thêm vào C:\PHP;nó - hoặc bất kỳ đường dẫn nào đến thư mục PHP của bạn.
    [Gợi ý: Nếu thư mục PHP của bạn chứa khoảng trắng, C:\Program Files\PHPbạn có thể cần sử dụng biểu mẫu tên tệp ngắn ở đây, tức là C:\Progra~1\PHP.]
  4. Sau đó, dừng hoàn toàn Apache và khởi động lại [khởi động lại đơn giản có thể không đủ].

Cập nhật 2017-05:
Tôi đã thay đổi các hướng dẫn ở trên để thêm trước biến Path với đường dẫn PHP thay vì thêm vào nó. Điều này đảm bảo rằng các DLL trong đường dẫn PHP được sử dụng chứ không phải bất kỳ phiên bản nào khác [lỗi thời] trong các đường dẫn khác của hệ thống.

Cập nhật 2018-04:
Nếu bạn đã chọn sai cách và sao chép bất kỳ tệp DLL PHP nào sang đường dẫn Apache hoặc Windows, thì tôi thực sự khuyên bạn nên xóa chúng một lần nữa! Nếu không, bạn có thể gặp rắc rối khi cố cập nhật PHP sau này. Nếu một phiên bản PHP mới mang đến các phiên bản mới của các DLL này, nhưng các DLL cũ của bạn vẫn còn sót lại trong đường dẫn hệ thống hoặc máy chủ web, thì các DLL cũ này có thể được tìm thấy trước tiên. Điều này chắc chắn sẽ ngăn trình thông dịch PHP khởi động. Những lỗi như vậy có thể rất khó hiểu và khó giải quyết. Vì vậy, tốt hơn hãy dọn dẹp ngay bây giờ và xóa bất kỳ tệp DLL nào được đề cập khỏi đường dẫn Windows và Apache, nếu bạn đã sao chép chúng ở đó.
[Cảm ơn @EdmundTam và @WasimA. Đã chỉ ra vấn đề này trong phần bình luận!]

Cập nhật 2019-10:
Mẹo: Để tìm tất cả các bản sao của các tệp DLL này và kiểm tra xem bạn có thể đã đặt chúng vào sai thư mục hay không, bạn có thể sử dụng các lệnh sau trong cửa sổ Dấu nhắc lệnh của Windows:

dir c:\libeay32.dll /s
dir c:\ssleay32.dll /s

Hãy cảnh báo rằng các lệnh này có thể mất một chút thời gian để hoàn thành khi chúng tìm kiếm trong toàn bộ cấu trúc thư mục của ổ đĩa C hệ thống của bạn :.

Cập nhật 2020-08:
Nếu thư mục PHP của bạn chứa khoảng trắng [tức là C:\Program Files\PHP], bạn có thể cần sử dụng biểu mẫu tên tệp ngắn trong Pathbiến ở bước 3 [tức là C:\Progra~1\PHP]. Cảm ơn @onee về mẹo này!

77 hữu ích 5 bình luận chia sẻ

Chủ Đề