- 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.dll
và ssleay32.dll
phải có đường dẫn để php_curl.dll
tả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 Path
biến Windows .
- Trong
Control Panel -> System
nhấp chuột vào Advanced System Cài đặt hoặc bấm WIN+ Rvà loạiSystemPropertiesAdvanced
- Nhấp vào nút Biến môi trường .
- Trong Biến hệ thống, bạn sẽ tìm thấy
Path
biến. Chỉnh sửa nó và thêm vàoC:\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\PHP
bạ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
.] - 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 Path
biế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ẻ