Php

我如何告訴 Apache 使用哪個 PHP?

  • May 7, 2019

我在Mac OS X (10.5)上執行****Apache2。我剛剛編譯了PHP 5.2.8,終於開始工作了(或者我認為)。pdo-mysql

這個終端命令:

php --version

顯示5.2.8並且我安裝了正確的模組。

但是,當我執行 a 時phpinfo()Apache會輸出PHP 5.2.6(我的早期版本,沒有pdo_mysql)。

如何告訴 Apache 載入哪個 PHP?有這httpd.conf條線:

LoadModule php5_module        libexec/apache2/libphp5.so

但是,我不知道那是什麼或在哪裡。

那是我必須改變的嗎?

我認為所有這些答案並沒有真正回答這個問題。根級別可以通過執行命令來確定httpd -V。這將向您展示在編譯時建構 Apache 守護程序的選項。這是控制在哪裡httpd確定在哪裡尋找它的配置。預設情況下,文件和 .so 模組。

例如:

% httpd -V
Server version: Apache/2.2.17 (Unix)
Server built:   Dec 17 2010 11:58:24
Server's Module Magic Number: 20051115:25
Server loaded:  APR 1.3.12, APR-Util 1.3.9
Compiled using: APR 1.3.12, APR-Util 1.3.9
Architecture:   32-bit
Server MPM:     Prefork
 threaded:     no
   forked:     yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/sbin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"

該輸出中的關鍵行是HTTPD_ROOT. 這定義了 Apache 的ROOT目錄從哪裡開始,/etc/httpd在我的例子中,當尋找配置時。文件和模組。

**注意:**這ROOTDocumentRoot. 這ROOT特定於httpd守護程序的編譯DocumentRoot方式,用於指定httpd守護程序應從何處開始查找實際 Web 內容(.html 文件等)。

對於我的httpd.conf文件,我有以下載入行:

LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so

鑑於此,您的模組的完整路徑將是,例如:

/etc/httpd/modules/mod_auth_basic.so

這是來自CentOS 5.x系統,但該技術仍然適用。

順便說一句,它可能會有點混亂,因為在CentOS 的情況下,文件是在這裡物理組織的:

% ls /usr/lib/httpd/modules/
libphp5.so            mod_authnz_ldap.so      mod_dav_fs.so      mod_headers.so       mod_perl.so            mod_speling.so

…然後 Apache 守護程序可以httpd通過以下路徑訪問:

% ls -l /etc/httpd/
total 12
drwxr-xr-x 2 root root 4096 Apr 26  2011 conf
drwxr-xr-x 3 root root 4096 Apr 26  2011 conf.d
-rw-r--r-- 1 root root   18 Feb 24  2009 htpasswd
lrwxrwxrwx 1 root root   19 Apr 26  2011 logs -> ../../var/log/httpd
lrwxrwxrwx 1 root root   27 Apr 26  2011 modules -> ../../usr/lib/httpd/modules
lrwxrwxrwx 1 root root   13 Apr 26  2011 run -> ../../var/run

modules連結連接– /etc/httpd> 。/usr/lib/httpd/modules

引用自:https://serverfault.com/questions/428800