如何在 apache 和命令行 php 上为 mod_php 创建单独的配置文件?

如何在 apache 和命令行 php 上为 mod_php 创建单独的配置文件?

我正在查看 ubuntu 为 apache (mod_php) 和 php cli 设置 php。它们在 /etc/php5/apache2/php.ini 中有一个配置 ini,其中包含 apache+php 的设置,在 /etc/php5/cli/php.ini 中还有另一个配置 ini,用于 php cli。我如何复制这些设置?我在 rhel 环境中编译 php

答案1

当您编译 php 时,您将需要编译它两次。因此,您可以做的是首先检查 mod_php 的 php 信息,然后检查 cli。它们的编译方式可能不同。<?php print phpinfo();?>将为您提供 mod_php 的配置命令。php -i您的 cli 版本的简单命令将为您提供 cli 配置命令。这是确认您当前正在使用的内容实际上是您将要编译的内容的最佳方法。

因此对于 mod_php,您可以执行以下操作: ./configure <more-configs-here> --prefix=/some/prefix/dir --with-apxs2=/path/to/your/apache --disable-cli --disable-cgi --with-config-file-path=/etc/php5/apache2

对于 php cli: ./configure <more-configs-here> --prefix=/some/prefix/dir --with-config-file-path=/etc/php5/cli

重要的是,在配置 cli 时不要配置 apxs2。

当然make && make install,或者无论你最后需要做什么。

答案2

这些值在编译时是硬编码的。在 Debian/Ubuntu 软件包中,这些路径似乎通过patches/006-debian_quirks.patch作为打包过程的一部分应用的补丁进行了修改。具体来说,这是补丁的这一片段。

--- php5.orig/sapi/cli/php.1.in
+++ php5/sapi/cli/php.1.in
@@ -374,13 +374,14 @@ Shows configuration for extension
 Show configuration file names
 .SH FILES
 .TP 15
-.B php\-cli.ini
+.B /etc/php5/cli/php.ini
 The configuration file for the CLI version of PHP.
 .TP
-.B php.ini
-The standard configuration file will only be used when 
-.B php\-cli.ini
-cannot be found.
+.B /etc/php5/cgi/php.ini
+The configuration file for the CGI version of PHP.
+.TP
+.B /etc/php5/apache2/php.ini
+The configuration file for the version of PHP that apache2 uses.
 .SH EXAMPLES
 .TP 5
 \fIphp \-r 'echo "Hello World\\n";'\fP

在 Debian/Ubuntu 系统上执行apt-get source php5,以获取源包,其中将包括所有构建脚本和使用的补丁。请务必查看脚本,可能还有更多与此相关的配置,我无法通过快速 grep 看到。

答案3

@Zoredache 的答案是正确的。

缺少的信息是“我如何应用这些路径?

假设你获取了 Debian 7 中的 PHP 源码包

  apt-get source php5
  #then
  cd php5-5.4.41

所有后续步骤均假定您位于此目录中。

在此目录中,您可以找到“debian”子目录,其中包含“debian/补丁”包含 Debian 应用于原始源的补丁的目录。

   ls debian/patches
   # gives files ending with .patch
   # we need debian/patches/0004-006-debian_quirks.patch
   # found via grep -Ri 'php5/cli/php.ini' *

我们将使用名为“quilt”的工具创建一个适合此层次结构的补丁:

apt-get install quilt

quilt 补丁系统管理原始源的补丁堆栈。然后我们应用包中包含的所有补丁。

  export QUILT_PATCHES=debian/patches
  quilt push -a

如果您只想将其应用于 php.ini 位置,例如在 PHP 5.3 源中,您可以尝试删除 debian/patches/ 中除 0004-006-debian_quirks.patch 之外的所有文件,然后将其移动到 PHP 5.3 文件夹中。

相关内容