web-dev-qa-db-ja.com

ApacheにどのPHP=使用するように指示するのですか?

Mac OS X(10.5)Apache2を実行しています。私はコンパイルしましたPHP 5.2.8そして最後に_pdo-mysql_が動作しました(またはそう思います)。

この端末コマンド:

_php --version
_

5.2.8が表示され、適切なモジュールがインストールされています。

しかし、phpinfo()を実行すると、ApacheがダンプアウトしますPHP 5.2.6(私の以前のバージョン、_pdo_mysql_なし)。

どのPHP=ロードするかをApacheに指示するにはどうすればよいですか?_httpd.conf_には次の行があります。

_LoadModule php5_module        libexec/Apache2/libphp5.so
_

しかし、それがどこにあるのかはわかりません。

それは私が変えなければならないことですか?

34
Sam McAfee

私はこれらすべての答えが実際に質問に答えているわけではないと思います。ルートレベルは、コマンド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ファイルには、次のLoad行があります。

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に接続します。

14
slm

locateコマンドを使用して、システム上のファイルを見つけることができます。

#libphp5.so 
を見つけます

その名前のすべてのファイルの完全パスが出力されます。 /usr/libexec/Apache2/libphp5.so

4
Rob Kennedy

Httpd.confにロードされたモジュールの親ディレクトリ(libexec/Apache2/libphp5.soなど)は、デフォルトで通常/usrに設定されているServerRootディレクティブによって定義されます。これを変更することはお勧めしませんが、パスが正確にどこで定義されているかを誰かが知っていると便利です。

ApacheのウェブサイトはServerRootについて次のように述べています:

他の構成ディレクティブ(例えば、IncludeやLoadModuleなど)の相対パスは、このディレクトリからの相対パスと見なされます。

さらに、デフォルトのhttpd.confファイルのコメントは次のとおりです。

ServerRoot:サーバーの構成、エラー、およびログファイルが保持されるディレクトリツリーの最上位。

4
billynoah

Apacheは「/ usr/libexec/httpd /」でモジュールを探しているはずです。そこに「libphp5.so」というファイルまたはシンボリックリンクがあります。シンボリックリンクの場合は、新しい5.2.8 libphp5.soに再リンクする必要があります。そうでない場合は、5.2.8 libphp5.soを「/ usr/libexec/httpd /」にコピーし、「Sudo apachectl restart」でApacheを再起動します。 。

3
Tautologistics

私はApacheとPHPがサーバーの1つにインストールされていました。これは前のシステム管理者によってインストールされました。ApacheとPHPの両方がソースからコンパイルされましたこれに加えて、デフォルトPHPがインストールされていました。つまり、ApacheがどのPHPを使用しているかを知るためです。以下のコマンドを実行します。

   <Install Dir of PHP>/bin/php -i | grep apxs

これは私にApache apxsへの道を与えました

  Apache_HOME/bin/apxs

これにより、このphpで使用されているApacheに関する情報が得られました。入力したときにデフォルトのphpがエラーを出しました

#php -i | grep apxs 

 Failed loading opcache.so:  opcache.so: cannot open shared object file: No    such file or directory PHP Warning:  PHP Startup: Unable to load dynamic library     '<PHP_HOME>/lib/php/extensions/debug-non-zts-20121212/memcached.so' - <PHP_HOME>/lib/php/extensions/debug-non-zts-20121212/memcached.so: undefined symbol: OnUpdateLongGEZero in Unknown on line 0

このようにして、Apacheで使用されているphpを見つけることができました。

0
user2935688