AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 428800
Accepted
Sam McAfee
Sam McAfee
Asked: 2008-12-23 18:15:17 +0800 CST2008-12-23 18:15:17 +0800 CST 2008-12-23 18:15:17 +0800 CST

我如何告诉 Apache 使用哪个 PHP?

  • 772

我在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)。

我如何告诉 Apache 要加载哪个 PHP?有httpd.conf一行:

LoadModule php5_module        libexec/apache2/libphp5.so

但是,我不知道那是什么或在哪里。

那是我必须改变的吗?

php apache-2.2 pdo
  • 5 5 个回答
  • 140025 Views

5 个回答

  • Voted
  1. Best Answer
    slm
    2013-01-17T18:02:37+08:002013-01-17T18:02:37+08:00

    我认为所有这些答案都没有真正回答问题。可以通过运行命令来确定根级别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在我的例子中,在寻找配置时。文件和模块。

    注意:这ROOT与DocumentRoot. 这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
    

    ...然后可httpd通过此路径访问 Apache 守护进程:

    % 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

    • 17
  2. Rob Kennedy
    2008-12-23T19:14:16+08:002008-12-23T19:14:16+08:00

    您可以使用以下locate命令在系统上查找文件:

    # 找到 libphp5.so
    

    它将打印具有该名称的所有文件的完整路径。我有一个在/usr/libexec/apache2/libphp5.so。

    • 4
  3. Eaten by a Grue
    2013-01-17T20:34:14+08:002013-01-17T20:34:14+08:00

    httpd.conf 中加载的模块的父目录(例如:)libexec/apache2/libphp5.so由ServerRoot指令定义,默认情况下通常设置为/usr. 我不建议更改此设置,但它可能对某人了解该路径的确切定义位置很有用。

    Apache 的网站对ServerRoot的描述如下:

    其他配置指令(例如 Include 或 LoadModule)中的相对路径被视为相对于此目录。

    此外,默认的 httpd.conf 文件注释如下:

    ServerRoot:保存服务器配置、错误和日志文件的目录树的顶部。

    • 4
  4. Tautologistics
    2008-12-23T19:11:23+08:002008-12-23T19:11:23+08:00

    Apache 应该在“/usr/libexec/httpd/”中寻找模块。在那里你会找到一个名为“libphp5.so”的文件或符号链接。如果是符号链接,则需要重新链接到新的 5.2.8 libphp5.so,否则只需将 5.2.8 libphp5.so 复制到“/usr/libexec/httpd/”并使用“sudo apachectl restart”重新启动 apache .

    • 3
  5. user2935688
    2015-03-28T14:09:43+08:002015-03-28T14:09:43+08:00

    我在其中一台服务器上安装了 Apache 和 PHP。这是由以前的系统管理员安装的。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

相关问题

  • 用户特定的 Php.ini 当 php 作为模块运行时?

  • 使 php mail() 函数在 ubuntu-server 上工作的步骤是什么?

  • Web 服务器和数据库服务器位于完全不同的位置

  • PHP 作为 CGI 还是 Apache 模块?

  • 通过 VPN 连接什么是远程服务器 IP?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    限制 Apache 仅允许使用 SSL 访问某些目录

    • 6 个回答
  • Marko Smith

    我如何告诉 Apache 使用哪个 PHP?

    • 5 个回答
  • Marko Smith

    运行 Oracle SQL 脚本并通过命令提示符退出 sqlplus.exe

    • 11 个回答
  • Martin Hope
    DrStalker 限制 Apache 仅允许使用 SSL 访问某些目录 2008-09-19 17:19:55 +0800 CST
  • Martin Hope
    Sam McAfee 我如何告诉 Apache 使用哪个 PHP? 2008-12-23 18:15:17 +0800 CST
  • Martin Hope
    JoshL 运行 Oracle SQL 脚本并通过命令提示符退出 sqlplus.exe 2008-09-23 15:33:09 +0800 CST
  • Martin Hope
    Joel Spolsky 有没有可以跟踪我拥有的所有域名的网站? 2008-08-02 08:37:51 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve