2013-07-31 10 views
6

Próbowałem uzyskać rozszerzenie Intl działające na mojej testowej stacji roboczej (PHP 5.5.1, Apache 2.2.4, Windows 7 32-bit). Wygląda na to, że bez względu na to, co próbuję, nie mogę go uruchomić.Dlaczego PHP w systemie Windows nie może wyświetlić rozszerzenia php_intl.dll, mimo że istnieje?

  • Odkomentowałem linię "extension = php_intl.dll" w moim php.ini.
  • Sprawdziłem, że dyrektywa extension_dir wskazuje właściwy katalog (c: \ wamp \ php5.5 \ ext).
  • Sprawdziłem, że php_intl.dll znajduje się w c: \ wamp \ php5.5 \ ext.
  • Sprawdziłem, że wszystkie pliki icu * .dll są obecne w katalogu głównym php (c: \ wamp \ php5.5).
  • Sprawdziłem, że c: \ wamp \ php5.5 znajduje się w mojej zmiennej PATH.
  • I tak, kopia pliku php.ini, który edytuję, jest poprawna, podana w dyrektywie PHPIniDir w httpd.conf.

Sprawdziłem dziennik błędów Apache i znaleźć ten wiersz za każdym razem mam wznowiona Apache:

PHP Warning: PHP Startup: Nie można załadować biblioteki dynamicznej „C: \ wamp \ php5.5 \ ext \ php_intl.dll '- Określony moduł nie został znaleziony. \ r \ n w Nieznany w linii 0

Powtarzam się, ale c: \ wamp \ php5.5 \ ext \ php_intl.dll DOES EXIST !

Kusi mnie, aby spróbować wskazać na Eksploratorze Windows i krzyczeć na mój komputer, "LOOK! THE STINKIN" FILE JEST PRAWDĘ TAM! " Jakiś pomysł, dlaczego mogę zobaczyć plik i PHP, nawet jeśli najwyraźniej szukamy w tym samym katalogu? Czy coś jeszcze się dzieje, że tęskniłem?

+0

Czy to pasująca wersja DLL z PHP? –

+0

Tak, jest to wersja 5.5.1. – PerceptorII

Odpowiedz

12

Upewnij się, że Apache potrafi znaleźć i załadować pliki icu * .dll z katalogu podstawowego PHP.

Szybkie i proste rozwiązanie polega na skopiowaniu plików dll do katalogu bin Apache.

+0

To działa dla mnie !!!. Po prostu skopiuj wszystkie icu * .dll do folderu bin apache. Używając serwera Wamp z Apache 2.4.4, php 5.4.16 – gonzalezea

+1

testowałem to z ręczną instalacją Apache + PHP i działało! Jak tylko zobaczyłem, że masz rację, usunąłem pliki z Apache24/bin, więc spodziewałem się, że 'intl' nie zostanie ponownie rozpoznany, ale nadal działa, zastanawiam się, dlaczego ... Byłoby interesujące poznać prawdziwy odpowiedz i spraw, aby Apache rozpoznał pliki 'icu * .dll' bez ich kopiowania. Ktoś wie jak? Dzięki – Metafaniel

+0

Pracowałem dla mnie w WAMP, [ścieżka do wamp]/wamp/bin/php/php [numer wersji]/- skopiowałem wszystkie pliki icu * .dll do - [ścieżka do wamp]/wamp/bin/apache/apache [ numer wersji]/bin/ Dziękujemy! – JxAxMxIxN

3

Chociaż rozwiązanie SeventyFourLaboratories jest proste i działa, istnieje rozwiązanie, które nie wymaga modyfikacji dystrybucji Apache lub PHP (a czasami nie można ich zmieniać na serwerach produkcyjnych).

Powiedziałeś, że zweryfikowowałeś C:\wamp\php5.5 jest w twoim PATH. System Windows ma dwa typy typu ze zmiennych środowiskowych: zmienne użytkownika i systemowe.

Próbowałem ustawić C:\wamp\php5.5 w mojej zmiennej użytkownika PATH, i to nie działa. Jednak ustawienie go w systemie w zmienna PATH sprawia, że ​​działa. Tak, należy sprawdzić, czy użyć zmiennej systemowej PATH skonfigurować Apache zamiast zmiennej użytkownika o tej samej nazwie.

+0

Dodanie katalogu głównego instalacji PHP naprawiło to za mnie. Nie musisz przenosić plików .dll. –

0

pełną poprawką byłoby zmienić C: \ wamp \ scripts \ config.inc.php następująco:

Znajdź sekcję tego pliku

$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'); 

i zmień go na

$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

Jak dodać swoją lokalizację php.exe do PATH.

(Windows 7 GUI)

uzyskać dostęp administratora do "zmienne środowiskowe: Zmienne systemowe", wykonaj instrukcje tutaj: https://kb.wisc.edu/cae/page.php?id=24500

W "zmienne środowiskowe: Zmienne systemowe", edytować zmienną 'ścieżki' i poprzedzić istniejący ciąg (NIE USUNĄĆ go) wraz z lokalizacją. np .: C: \ wamp \ bin \ php \ php5.5.12;

  • Pracowałem dla mnie.
2

Miałem dokładnie ten sam problem i po blisko 5 godzinach pracy nad tym zagadnieniem w końcu udało mi się go rozwiązać. Były dwie główne zmiany, które musiałem wprowadzić.

1) Po pobraniu rozszerzenia, którego próbowałem użyć, przyszedł z wieloma innymi plikami poza samym plikiem .dll - większość z nich to .pdb. Przeniosłem je wszystkie do folderu ext zawierającego pliki .dll.

2) Odpowiedź przez smaines w ALAYA kropka com przewidzianego jako komentarz here dał mi drugą rzeczą, że muszę to zrobić - dodać ścieżkę do katalogu ext do zmiennej PATH okna $.

Istnieje wiele sposobów można to zrobić, tutaj jest jeden:

  • Go do mojego komputera
  • prawym przyciskiem myszy i wybierz Właściwości
  • Kliknij 'Zaawansowane ustawienia systemu' na lewym
  • Click w zakładce "Zaawansowane" u góry
  • Kliknij przycisk "Zmienne środowiskowe"
  • Przeszukuj listę zmiennych, aby znaleźć zmienną "Ścieżka", wybierz ją
  • Kliknij przycisk "Edytuj ..." (po wybraniu zmiennej "Ścieżka")
  • Pojawi się kolejne okno dialogowe z dwoma polami wprowadzania. Dolna jest zmienną, wybierz ją.
  • Dodaj na końcu średnik, a następnie ścieżkę, w tym przypadku wpisz "; C: \ wamp \ php5.5 \ ext" (średnik służy tylko do oddzielenia go od poprzedniej ścieżki
  • kliknij "OK "we wszystkich oknach dialogowych, które mają pochodzić, aby zamknąć im

Po dokonaniu powyższych zmian należy ponownie uruchomić maszynę im wziąć wpłynąć.

mam nadzieję, że pomoże to pracował dla mnie Wydaje się, że jest to dość powszechny problem - przynajmniej znalazłem sporo dyskusji na ten temat i jego odmiany.

+0

Dodanie do katalogu PATH katalogu php (nie katalogu ext) rozwiązało go dla mnie. Ponowne uruchomienie nie jest potrzebne, po prostu wyloguj się i zaloguj ponownie. – user2345998

0

Korekta powyższych komunikatów

Jeśli dodajesz katalog PHP do PATH, upewnij się, aby dodać folder, php, a nie folder php/ext.

W moim przypadku był to C: \ wamp \ bin \ php \ php5.5.12, a nie C: \ wamp \ bin \ php \ php5.5.12 \ ext.

1

To doprowadzało mnie do szału. Miałem wszystkie pliki dll icu na mojej ścieżce itp. W końcu instalowanie Visual C++ 2015 x86 rozwiązało to dla mnie.

Powiązane problemy