phần mở rộng intl: cài đặt php_intl.dll


76

Tôi đang cố định vị php_intl.dllvà cài đặt nó.

Có ai có bất cứ lời khuyên?

Câu trả lời:


61

Các gói tại http://windows.php.net/download/ đều chứa gói php\_intl.dllnằm trong subir ext/.
Tất cả những gì bạn phải làm là kiểm tra xem extension_dir của bạn có trỏ đến đúng thư mục hay không và thêm (hoặc bỏ ghi chú) extension=php\_intl.dllchỉ thị.


Đừng quên khởi động lại Apache sau khi thay đổi tệp php.ini.
Dmytro Dzyubak

94

Để php_intl.dlltiện ích mở rộng hoạt động chính xác, bạn cần có các tệp sau trong một thư mục trong PATH:

  • icudt36.dll
  • icuin36.dll
  • icuio36.dll
  • icule36.dll
  • iculx36.dll
  • icutu36.dll
  • icuuc36.dll

Theo mặc định, họ đang ngồi trong thư mục PHP của bạn, nhưng thư mục đó không nhất thiết phải nằm trong thư mục của bạn PATH(nó không dành cho tôi, sử dụng xampp)

Điều này phải nằm trong đường dẫn toàn cầu của bạn, không chỉ đường dẫn của người dùng. Để đặt đường dẫn chung, hãy chuyển đến thông tin hệ thống ( windows key + PAUSE), sau đó đến Cài đặt Hệ thống Nâng cao (Vista +) hoặc Nâng cao (XP) và nhấp vào nút "Biến Môi trường" và thêm thư mục thích hợp vào PATHbiến trong danh sách Biến Hệ thống.


3
Câu trả lời chính xác! ủng hộ. Chỉ cần lưu ý, có thể hữu ích, nếu bạn đang sử dụng xampp, hãy khởi động lại xampp sau khi bạn thực hiện thay đổi thành "Biến môi trường".
Rohit Gupta

Câu trả lời là tuyệt vời. Đã giúp tôi giải quyết vấn đề với Yii2 MessageFormater.php. Xin chân thành cảm ơn
userlond

Vừa gặp phải vấn đề này lần thứ hai cho cùng một vấn đề trên một máy tính khác. Ước gì tôi có thể bỏ phiếu hai lần.
danielson317

Đối với php7.1.6, các tệp DLL chứa số 57 thay vì 36. Giải pháp vẫn chỉ là thêm thư mục php vào PATH.
Joshua Walsh

Như đã chỉ ra trong câu trả lời user2650636, bạn cũng có thể sao chép các tệp icu * .dll trong thư mục apache / bin của mình (hoặc bất kỳ thư mục nào mà tệp thực thi chính của bạn nằm trong), thay vì thêm chúng vào đường dẫn. Mặc dù không hoàn hảo nhưng điều này cho phép các phiên bản PHP khác nhau chạy trên cùng một hệ thống.
youen

59

Tôi đã cài đặt XAMPP 1.8.3-0 và PHP 5.5.0.

1) chỉnh sửa php.ini:

từ

;extension=php_intl.dll

đến

extension=php_intl.dll

Lưu ý: Sau khi sửa đổi, cần lưu tệp tin (php.ini) cũng như cần khởi động lại Apache Server.

2) Chỉ cần sao chép tất cả các tệp icu * * * * * .dll :

từ

C: \ xampp \ php

đến

C: \ xampp \ apache \ bin

Sau đó, phần mở rộng intl hoạt động !!!


1
@rab đảm bảo rằng bạn đã cài đặt phiên bản gói có thể phân phối lại VC ++ được yêu cầu, những phiên bản này chứa các msvcp*tệp DLL. Tệp bạn đề cập msvcp110.dllphải được chứa trong gói VC ++ 2012 Redist.
khargoosh

Tuyệt vời, Trên Windows 10, câu trả lời Jeremy Warne không hoạt động nhưng điều này hoạt động. Cảm tạ!
PHPst

Đây là bản sửa lỗi cho sự cố của tôi. Sự cố đã xảy ra với tôi sau khi tôi cài đặt một gói xampp khác với PHP7. Cảm ơn!
jroi_web

15

Gặp sự cố tương tự ... Tôi đã tìm thấy các tệp cần thiết bằng cách tìm kiếm icu * * .dll trong ổ đĩa của mình và tìm thấy những tệp được liệt kê ở trên nhưng có 46 thay vì 36 trong thư mục php. Tôi sao chép dán chúng vào tệp apache / bin và thử khởi động apache và cuối cùng nó cũng bắt đầu. Trên trang Kiểm tra Máy chủ, nó hiện đã thay đổi từ Kiểm tra Vàng thành Xanh lục OK. Hi vọng điêu nay co ich.


Tôi nghĩ đây là vấn đề của tôi, nhưng hóa ra tôi đã mắc lỗi đánh máy trong các biến PATH của mình! Đảm bảo rằng đường dẫn của bạn chắc chắn là chính xác và bạn có thể không cần sao chép vào apache / bin
alexleonard

9

Nếu bạn đọc thông báo lỗi, thiếu "icuuc36.dll". Vấn đề là bạn không có PHP dir trong PATH của mình, hoặc bạn có thể sao chép tất cả các tệp "intl" từ thư mục php sang thư mục apache \ bin. Đó là: icudt36.dll icuin36.dll icuio36.dll icule36.dll iculx36.dll icutu36.dll icuuc36.dll


3

Đối với WampServer 2.5 ( Apache 2.4.9PHP 5.5.12 ):

Theo mặc định, tôi đã php_intl bật (bạn có thể bật nó khi bạnleft click on the wamp icon in the system tray > PHP > PHP extensions và kiểm tra xem nó đã được đánh dấu chưa)

Để nó hoạt động bình thường, tôi phải sao chép :

C: \ wamp \ bin \ php \ php5.5.12 \ icu ** 51.dll

(tổng số 8 tệp)

đến

C: \ wamp \ bin \ apache \ apache2.4.9 \ bin

Sau đó, chỉ cần khởi động lại wamp và mọi thứ đều ổn.


xampp only 6 tệp
Savan Dholu

3

Tôi có PHP 5.3.1 và Apache

Khi tôi thêm extension=php_intl.dll vào php.ini và khởi động lại apache, nó xuất hiện một cảnh báo cho biết "thao tác được yêu cầu không thành công"

Và lỗi này trên Event Monitor:

Faulting application name: httpd.exe, version: 2.2.14.0, time stamp: 0x4ac181d6
Faulting module name: php5ts.dll, version: 5.3.1.0, time stamp: 0x4b051b35
Exception code: 0xc0000005

Vấn đề là một số DLL như icudt36.dll bị thiếu (nhận thấy với sysinternals ProcMon), tôi đã tải xuống phiên bản zip php 5.3.1 và giải nén tất cả DLL vào thư mục PHP. Điều đó đã giải quyết vấn đề.


2

Tôi đã giải quyết vấn đề này bằng cách thêm thư mục PHP vào biến PATH. Tôi chỉ nối ;C:\xampp\phpđể Pathbiến trong biến môi trường Windows.


2

Tôi có IIS 7 và đã cài đặt PHP bằng Microsoft Web Platform Installer trên Windows 7. Trong IIS, đi tới Trình quản lý PHP trong trang chính cài đặt -> Tiện ích mở rộng PHP -> Bật hoặc Tắt tiện ích mở rộng. Tiện ích mở rộng Intl bị tắt theo mặc định.

Tôi hi vọng cái này giúp được


Làm thế nào để trả lời câu hỏi này?
Kmeixner

Tôi cho rằng anh ấy đang tìm kiếm php_intl.dll vì anh ấy gặp sự cố khi bật tiện ích mở rộng intl trong PHP, ít nhất đó là trường hợp của tôi. Nếu không, thì tôi xin lỗi. My bad
Johan Marchan

2

Bạn có thể gõ lệnh này trong terminal: sudo apt-get install php-intl



1

Khi tôi gặp phải vấn đề này, nó đã được giải quyết bằng cách sử dụng các bước được đề cập dưới đây:

Chỉnh sửa php.ini:

Làm

; extension = php_intl.dll tới

extension = php_intl.dll Chỉ cần sao chép tất cả các tệp icu * * * * .dll (bất kỳ tệp icu nào có phần mở rộng dll) từ

C: \ xampp \ php tới C: \ xampp \ apache \ bin

Ngoài ra Nếu bạn gặp lỗi thiếu tệp msvcp110.dll. Bạn phải tải xuống .dll phù hợp hoặc chỉ cần truy cập vào đây http://www.microsoft.com/es-es/download/confirmation.aspx?id=30679 và cài đặt vcredist_x64.exe và vcredist_x86.exe.

Bây giờ phần mở rộng intl sẽ hoạt động :-)


1

Trong trường hợp của tôi, việc thêm thư mục PHP vào PATH trong môi trường người dùng không hoạt động. Sau một số thử nghiệm, tôi thấy rằng nó nên được thêm vào PATH hệ thống (Tôi không biết tên của phần này của cửa sổ thiết lập hệ thống là gì, vì tôi có Windows Ba Lan).


1

Gói này đã được bao gồm trong các phần mở rộng cho PHP 7.2 trở lên và bạn chỉ cần bỏ ghi chú dòng sau trong php.ini

extension=intl

Phương thức bỏ ghi chú này hoạt động với hầu hết các phần mở rộng php dành cho windows nhưng không hoạt động với intl . Để intl hoạt động, bạn cũng phải sao chép tất cả icu * .dll từ thư mục php vào thư mục apache \ bin.
Daniel Wu

0

/ Digger đây /

Di chuyển các icu*****.dlltệp đến /ext/dường như cũng giải quyết được sự cố.

(Tất nhiên là nếu bạn chỉ định thư mục mở rộng ở đó)


0

Trong bảng điều khiển xampp của tôi, Nhấp vào cấu hình để mở php.ini

tẩy ; trong

; extension = php_intl.dll

Sau đó khởi động lại apache.


0

Có một cách tốt hơn để làm điều này.

Tôi đã gặp cùng một loại vấn đề với các phần mở rộng php ldap, intl, curl. Tôi đã giải quyết những vấn đề đó bằng những cách sau:

Đầu tiên, bạn phải kiểm tra xem các phần mở rộng này đã được kích hoạt trong tệp php.ini hay chưa bằng cách xóa dấu chấm phẩy (;) trước các dòng sau:

;extension=php_intl.dll
;extension=php_ldap.dll
;extension=php_curl.dll

Bây giờ bạn có thể tải trực tiếp các tệp dll cần thiết đó (tức là libeay32, libssh2, ssleay32, icu **. Dll) từ tệp httpd.conf (tệp cấu hình apache) của bạn. Bạn không phải làm bất kỳ việc nào khác như sao chép chúng vào thư mục bin của apache hoặc thư mục ext của php. Chỉ cần thêm chúng trực tiếp vào tệp httpd.conf của apache.

Xin lưu ý rằng ví dụ sau dành cho phiên bản php 5.5.x.

LoadFile  "C:/php/icudt51.dll"
LoadFile  "C:/php/icuin51.dll"
LoadFile  "C:/php/icuio51.dll"
LoadFile  "C:/php/icule51.dll"
LoadFile  "C:/php/iculx51.dll"
LoadFile  "C:/php/icutest51.dll"
LoadFile  "C:/php/icutu51.dll"
LoadFile  "C:/php/icuuc51.dll"

LoadFile  "C:/php/libeay32.dll"
LoadFile  "C:/php/libssh2.dll"
LoadFile  "C:/php/ssleay32.dll"

Đó là nó. Bây giờ, khởi động lại apache hoặc wamp của bạn và bạn đã sẵn sàng.


0
  1. Dưới phần mở rộng php trong wampserver của bạn, hãy đảm bảo intl được kiểm tra
  2. kiểm tra extension_dir của bạn trong tệp php / v7.0 / php của bạn để đảm bảo rằng thư mục không được nhận xét và nó là chính xác
  3. (Không biết điều này có đóng góp không nhưng tôi đã làm cả ba) Trong danh sách phần mở rộng của bạn trong cùng một tệp như 2 ở trên, hãy bao gồm tệp intl ở cùng định dạng với phần còn lại (nếu nó không được bao gồm). Tất cả tốt nhất

0

Tôi đã gặp sự cố khi chạy intl bằng PHP 7.1.7 và PhpStorm trên Windows 10. Dựa trên các câu trả lời khác ở đây, tôi có thể nói đó là sự cố phụ thuộc PATH / DLL nhưng dường như tôi không thể tìm thấy tất cả các tệp được yêu cầu ngay cả sau khi (lại) cài đặt Visual C ++ Redistributable.

Cuối cùng tôi đã tìm kiếm vcr * .dll trong ổ C: và tìm thấy một bản sao của vcruntime140.dll trong C:\Program Files\Mozilla Firefoxthư mục của mình . Vì vậy, ngoài việc thực hiện những thay đổi này đối với php.ini:

extension_dir = "ext"
extension=php_intl.dll

Tôi cũng đã đặt PATH thời gian chạy của mình thành CHỈ thư mục PHP (trong trường hợp của tôi là C:\Program Files\PHP\7.1.7) và thư mục Firefox (ở trên) và nó hoạt động CUỐI CÙNG! Tôi biết nó cần nhiều thứ hơn chỉ là vcruntime140.dll mà các tệp DLL bắt buộc khác cũng phải nằm trong thư mục FF (có vài chục tệp nhưng tôi không buồn tìm ra cái nào là cần thiết).


0

Bạn phải sửa đổi tệp php.ini bằng cách bỏ dấu chấm phẩy trên dòng chứa extension = php_intl.dll

Sau đó, vào thư mục php của Xamp hoặc Wamp hoặc EasyPHP, sao chép mọi tệp dll có chứa icu *, Dán chúng vào bên trong tệp windows của bạn.

Điều đó đã làm việc cho tôi. Cấu hình: EasyPHP Dev Server, Windows 10.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.