我在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
但是,我不知道那是什么或在哪里。
那是我必须改变的吗?
我认为所有这些答案都没有真正回答问题。可以通过运行命令来确定根级别
httpd -V
。这将向您显示 Apache 守护程序在编译时使用哪些选项构建。这就是控制在哪里httpd
决定在哪里寻找它的配置。默认情况下,文件和 .so 模块。例如:
该输出中的关键行是
HTTPD_ROOT
. 这定义了 Apache 的ROOT
目录从哪里开始,/etc/httpd
在我的例子中,在寻找配置时。文件和模块。注意:这
ROOT
与DocumentRoot
. 这ROOT
特定于httpd
守护进程的编译方式,DocumentRoot
用于指定httpd
守护进程应该从哪里开始寻找实际的 Web 内容(.html 文件等)。对于我的
httpd.conf
文件,我有以下负载线:鉴于此,您的模块的完整路径将是,例如:
这是来自CentOS 5.x系统,但该技术仍然适用。
顺便说一句,它可能会有点混乱,因为在CentOS 的情况下,文件实际上是在这里组织的:
...然后可
httpd
通过此路径访问 Apache 守护进程:modules
链接连接--/etc/httpd
> 。/usr/lib/httpd/modules
您可以使用以下
locate
命令在系统上查找文件:它将打印具有该名称的所有文件的完整路径。我有一个在
/usr/libexec/apache2/libphp5.so
。httpd.conf 中加载的模块的父目录(例如:)
libexec/apache2/libphp5.so
由ServerRoot
指令定义,默认情况下通常设置为/usr
. 我不建议更改此设置,但它可能对某人了解该路径的确切定义位置很有用。Apache 的网站对ServerRoot的描述如下:
此外,默认的 httpd.conf 文件注释如下:
ServerRoot:保存服务器配置、错误和日志文件的目录树的顶部。
Apache 应该在“/usr/libexec/httpd/”中寻找模块。在那里你会找到一个名为“libphp5.so”的文件或符号链接。如果是符号链接,则需要重新链接到新的 5.2.8 libphp5.so,否则只需将 5.2.8 libphp5.so 复制到“/usr/libexec/httpd/”并使用“sudo apachectl restart”重新启动 apache .
我在其中一台服务器上安装了 Apache 和 PHP。这是由以前的系统管理员安装的。Apache 和 PHP 都是从源代码编译的。除此之外,还安装了默认的 PHP。所以要知道Apache使用的是哪个PHP。我运行以下命令
这给了我 apache apxs 的路径
这给了我关于这个 php 使用哪个 Apache 的信息。当我输入时,默认的 php 出错了
所以通过这种方式我能够弄清楚 Apache 使用的 php。