2013-07-31 31 views
6

Tôi đã cố gắng để có được phần mở rộng intl làm việc trên máy trạm thử nghiệm của tôi (PHP 5.5.1, Apache 2.2.4, Windows 7 32-bit). Có vẻ như cho dù tôi có cố gắng gì đi chăng nữa thì tôi cũng không thể làm cho nó hoạt động được.Tại sao PHP không thể trên Windows thấy phần mở rộng php_intl.dll mặc dù nó tồn tại?

  • Tôi đã bỏ ghi chú dòng "extension = php_intl.dll" trong php.ini của mình.
  • Tôi đã xác minh chỉ thị extension_dir đang trỏ vào đúng thư mục (c: \ wamp \ php5.5 \ ext).
  • Tôi đã xác minh php_intl.dll nằm trong c: \ wamp \ php5.5 \ ext.
  • Tôi đã xác minh rằng tất cả các tệp icu * .dll có trong thư mục gốc của php (c: \ wamp \ php5.5).
  • Tôi đã xác minh rằng c: \ wamp \ php5.5 nằm trong PATH của tôi.
  • Và có, bản sao của php.ini Tôi đang chỉnh sửa là bản chính xác, cái được chỉ định bởi chỉ thị PHPIniDir trong httpd.conf.

Tôi đã kiểm tra các bản ghi lỗi Apache và tìm thấy dòng này mỗi khi tôi đã khởi động lại Apache:

PHP Warning: PHP Startup: Không thể tải năng động thư viện 'c: \ wamp \ php5.5 \ ext \ php_intl.dll '- Không thể tìm thấy mô-đun được chỉ định. \ r \ n trong Không xác định trên dòng 0

Tôi tự lặp lại, nhưng c: \ wamp \ php5.5 \ ext \ php_intl.dll KHÔNG CÓ !

Tôi bị cám dỗ khi thử trỏ vào Windows Explorer và hét vào máy tính của mình "LOOK! THE STINKIN 'FILE IS RIGHT!" Bất kỳ ý tưởng tại sao tôi có thể nhìn thấy các tập tin và PHP không thể mặc dù chúng tôi đang tìm kiếm trong cùng một thư mục? Hay có chuyện gì khác mà tôi đã bỏ lỡ?

+0

Đó có phải là phiên bản DLL phù hợp với PHP không? –

+0

Vâng, đó là phiên bản 5.5.1. – PerceptorII

Trả lời

12

Đảm bảo rằng Apache có thể tìm và tải các tệp icu * .dll từ thư mục cơ sở PHP.

Giải pháp đơn giản, nhanh chóng là sao chép các thư mục dll này vào thư mục bin Apache.

+0

Điều này làm việc cho tôi !!!. Chỉ cần sao chép tất cả icu * .dll vào thư mục bin apache. Sử dụng máy chủ Wamp với apache 2.4.4, php 5.4.16 – gonzalezea

+1

Tôi đã thử nghiệm điều này với cài đặt thủ công Apache + PHP và đã hoạt động! Ngay sau khi tôi thấy bạn đã đúng, tôi đã xóa các tập tin từ Apache24/bin, vì vậy tôi mong đợi 'intl' sẽ không được công nhận một lần nữa nhưng nó vẫn hoạt động, tôi tự hỏi tại sao ... Thật thú vị khi biết thực trả lời và làm cho Apache nhận ra những tệp 'icu * .dll' mà không sao chép chúng. Ai đó biết làm thế nào? Cảm ơn – Metafaniel

+0

Đã làm việc cho tôi trong WAMP, [đường dẫn đến wamp]/wamp/bin/php/php [số phiên bản]/- sao chép tất cả các tệp .dll * vào - [đường dẫn đến wamp]/wamp/bin/apache/apache [ Số phiên bản]/bin/ Cảm ơn bạn! – JxAxMxIxN

3

Mặc dù giải pháp của SeventyFourLaboratories rất đơn giản và nó hoạt động, có một giải pháp không yêu cầu bạn sửa đổi bản phân phối Apache hoặc PHP (và đôi khi, bạn không được phép thay đổi chúng trong máy chủ sản xuất).

Bạn đã xác minh C:\wamp\php5.5 nằm trong số PATH của mình. Windows có hai loại loại của biến môi trường: biến người dùng và hệ thống.

Tôi đã cố gắng đặt C:\wamp\php5.5 trong biến người dùng của mình PATH và không hoạt động. Tuy nhiên, đặt nó trong hệ thống biến PATH làm cho nó hoạt động. Vì vậy, bạn nên xác minh rằng bạn sử dụng biến hệ thống PATH để định cấu hình Apache thay vì biến người dùng có cùng tên.

+0

Thêm gốc của bản cài đặt PHP đã sửa lỗi này cho tôi. Không cần phải di chuyển các tập tin .dll xung quanh. –

0

sửa chữa hoàn chỉnh sẽ thay đổi C: \ wamp \ scripts \ config.inc.php như sau:

Tìm phần này của tập tin đó

$phpDllToCopy = array (
'fdftk.dll', 
'fribidi.dll', 
'libeay32.dll', 
'libmhash.dll', 
'libmysql.dll', 
'msql.dll', 
'libmysqli.dll', 
'ntwdblib.dll', 
'php5activescript.dll', 
'php5isapi.dll', 
'php5nsapi.dll', 
'ssleay32.dll', 
'yaz.dll', 
'libmcrypt.dll', 
'php5ts.dll', 
'php4ts.dll'); 

Và thay đổi nó để

$phpDllToCopy = array (
'fdftk.dll', 
'fribidi.dll', 
'icudt51.dll', // - Additions to avoid unknown error PHP 5.5.5 
'icuin51.dll', 
'icuio51.dll', 
'icule51.dll', 
'iculx51.dll', 
'icutest51.dll', 
'icutu51.dll', 
'icuuc51.dll', 
'icudt50.dll', // - Additions to avoid unknown error PHP 5.5 
'icuin50.dll', 
'icuio50.dll', 
'icule50.dll', 
'iculx50.dll', 
'icutest50.dll', 
'icutu50.dll', 
'icuuc50.dll', 
'icudt49.dll', // - Additions to avoid unknown error PHP 5.3/5.4 
'icuin49.dll', 
'icuio49.dll', 
'icule49.dll', 
'iculx49.dll', 
'icutest49.dll', 
'icutu49.dll', 
'icuuc49.dll', 
'libeay32.dll', 
'libmhash.dll', 
'libmysql.dll', 
'libsasl.dll', // - Additions to avoid unknown error 
'msql.dll', 
'libmysqli.dll', 
'ntwdblib.dll', 
'php5activescript.dll', 
'php5isapi.dll', 
'php5nsapi.dll', 
'ssleay32.dll', 
'yaz.dll', 
'libmcrypt.dll', 
'php5ts.dll', 
'php4ts.dll', 
); 
0

LÀM THẾ NÀO ĐỂ thêm vị trí php.exe của bạn để PATH.

(Windows 7 GUI)

Để truy cập admin "Environment Variables: System Variables", hãy làm theo hướng dẫn ở đây: https://kb.wisc.edu/cae/page.php?id=24500

Trong "Environment Variables: Biến hệ thống", chỉnh sửa biến 'con đường' và tiền tố chuỗi hiện tại (KHÔNG XÓA IT), với vị trí của bạn. ví dụ: C: \ wamp \ bin \ php \ php5.5.12;

  • Làm việc cho tôi.
2

Tôi gặp vấn đề tương tự chính xác này và sau gần 5 giờ làm việc về vấn đề này, cuối cùng tôi đã giải quyết vấn đề. Có hai thay đổi chính mà tôi phải thực hiện.

1) Khi tôi tải xuống tiện ích mở rộng mà tôi đã cố gắng sử dụng, nó đi kèm với nhiều tệp khác ngoài tệp .dll - phần lớn trong số đó là .pdb. Tôi di chuyển tất cả chúng vào thư mục ext có chứa các tập tin .dll.

2) Câu trả lời của smaines tại alaya dot com được cung cấp dưới dạng chú thích here cho tôi điều thứ hai mà tôi cần làm - thêm đường dẫn đến thư mục ext vào cửa sổ biến $ PATH.

Có nhiều cách này có thể được thực hiện, đây là một trong:

  • Đến máy tính của tôi
  • Nhấp chuột phải và chọn Properties
  • Nhấp vào 'Advanced system settings' ở bên trái
  • Bấm trên tab 'Nâng cao' ở đầu
  • Nhấp vào nút 'Biến môi trường'
  • Tìm kiếm thông qua danh sách biến để tìm biến 'Đường dẫn', chọn biến
  • Nhấp vào nút 'Chỉnh sửa ...' (khi biến 'Đường dẫn' được chọn)
  • Điều này sẽ hiển thị một hộp thoại khác với hai trường nhập. Phần dưới cùng là biến, chọn nó.
  • Nối vào cuối dấu chấm phẩy rồi đường dẫn, trong trường hợp này bạn sẽ gõ '; C: \ wamp \ php5.5 \ ext' (dấu chấm phẩy chỉ để tách nó khỏi đường dẫn trước
  • bấm vào 'OK 'trong tất cả các hộp thoại mà đã đưa ra để đóng chúng

Sau khi thực hiện những thay đổi ở trên, bạn cần phải khởi động lại máy tính của bạn để họ có hiệu lực.

tôi hy vọng rằng sẽ giúp, nó làm việc cho tôi Có vẻ như đây là một vấn đề khá phổ biến - ít nhất tôi đã tìm thấy khá nhiều cuộc thảo luận về nó và các biến thể của nó.

+0

Thêm thư mục php (không phải thư mục ext) vào PATH đã giải quyết nó cho tôi. Khởi động lại là không cần thiết, chỉ cần đăng xuất và đăng nhập lại. – user2345998

0

Chỉnh sửa thông báo ở trên

Nếu bạn thêm thư mục php vào PATH, hãy đảm bảo thêm thư mục php, không phải thư mục php/ext.

Trong trường hợp của tôi, đó là C: \ wamp \ bin \ php \ php5.5.12, không phải C: \ wamp \ bin \ php \ php5.5.12 \ ext.

1

Điều này khiến tôi phát điên. Tôi đã có tất cả các dlls icu trong con đường của tôi vv Cuối cùng cài đặt Visual C++ 2015 x86 giải quyết nó cho tôi.

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