Używam Apache2 na Mac OS X (10.5) . Właśnie skompilowałem PHP 5.2.8 i wreszcie pdo-mysql
zacząłem działać ( a przynajmniej tak mi się wydaje).
To polecenie terminala:
php --version
pokazuje 5.2.8 i mam zainstalowane odpowiednie moduły.
Ale kiedy to zrobię phpinfo()
, Apache zrzuca PHP 5.2.6 (moja wcześniejsza wersja, bez pdo_mysql
).
Jak powiedzieć Apache, który PHP załadować? httpd.conf
Ma linię:
LoadModule php5_module libexec/apache2/libphp5.so
Ale nie wiem co i gdzie to jest.
Czy to muszę zmienić?
php
apache-2.2
pdo
Sam McAfee
źródło
źródło
Odpowiedzi:
Myślę, że wszystkie te odpowiedzi tak naprawdę nie odpowiadają na pytanie. Poziom główny można ustalić, uruchamiając polecenie
httpd -V
. To pokaże, z jakimi opcjami zbudowano demona Apache podczas kompilacji. To właśnie kontroluje, gdziehttpd
określa, gdzie szukać jego konfiguracji. pliki i moduły .so domyślnie.Na przykład:
Kluczową linią w tym wyjściu jest
HTTPD_ROOT
. To określa, gdzieROOT
katalog Apache ma się zacząć,/etc/httpd
w moim przypadku, podczas szukania konfiguracji. pliki i moduły.UWAGA: To
ROOT
nie to samo, coDocumentRoot
. JestROOT
to specyficzne dla sposobu, w jakihttpd
demon został skompilowany,DocumentRoot
służy do określania, gdziehttpd
demon powinien zacząć szukać rzeczywistej zawartości internetowej (pliki .html i tym podobne).Do mojego
httpd.conf
pliku mam następujące linie ładowania:Biorąc to pod uwagę, pełna ścieżka do modułów będzie na przykład:
To jest z CentOS 5.x systemu, ale technika ta jest nadal apt.
BTW, może to być trochę mylące, ponieważ w przypadku CentOS pliki są tutaj uporządkowane fizycznie:
... a następnie dostępne dla demona Apache
httpd
, poprzez tę ścieżkę:Na
modules
łączy łącznik/etc/httpd
->/usr/lib/httpd/modules
.źródło
Możesz znaleźć pliki w swoim systemie za pomocą
locate
polecenia:Wyświetli pełne ścieżki wszystkich plików o tej nazwie. Mam jeden na
/usr/libexec/apache2/libphp5.so
.źródło
Katalog macierzysty modułów załadowanych do httpd.conf (takich jak:)
libexec/apache2/libphp5.so
jest zdefiniowany przezServerRoot
dyrektywę, która domyślnie jest ustawiona na/usr
. Nie polecałbym tego zmieniać, ale może być przydatne, aby ktoś wiedział dokładnie, gdzie dokładnie ta ścieżka jest zdefiniowana.Witryna Apache mówi o ServerRoot :
dodatkowo domyślny komentarz do pliku httpd.conf brzmi:
ServerRoot: górna część drzewa katalogów, w której przechowywane są pliki konfiguracji, błędów i dzienników serwera.
źródło
Apache powinien szukać modułów w „/ usr / libexec / httpd /”. Znajdziesz tam plik lub dowiązanie symboliczne o nazwie „libphp5.so”. Jeśli jest to dowiązanie symboliczne, musisz połączyć się ponownie z nowym libphp5.so w wersji 5.2.8, w przeciwnym razie po prostu skopiuj plik libphp5.so w wersji 5.2.8 do „/ usr / libexec / httpd /” i zrestartuj apache za pomocą „sudo apachectl restart” .
źródło
Miałem Apache i PHP zainstalowane na jednym z serwerów. Zostało to zainstalowane przez poprzedniego administratora sys. Zarówno Apache, jak i PHP były zgodne ze źródła. Oprócz tego zainstalowano domyślny PHP. Aby wiedzieć, który PHP jest używany przez Apache. Uruchomiam poniższe polecenie
To dało mi ścieżkę do apache apxs
To dało mi informacje, na których Apache jest używany przez tego php. Domyślny php podał błąd podczas pisania
W ten sposób udało mi się zorientować, jakiego php używa Apache.
źródło