自定义 php.ini 每个目录(用于测试站点)


Custom php.ini per-directory (for testing sites)

我正在运行Apache 2.26,在Windows 7上使用PHP 5.39 mod_ssl/2.2.6 OpenSSL/0.9.8g。

PHP工作正常,Apache也是如此。

但是,我想尝试为每个目录创建自定义 php.ini 文件,用于我的测试站点。

我可以 - 并且确实 - 使用php_flag但想尝试创建一个有效的自定义 php.ini 文件。我试图谷歌这个,但找不到任何相关的内容。

这是我目前对 C:/www/vhosts/localhost/testsite1 的 .htaccess :

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}'.php -f
RewriteRule ^(.*)$ $1.php

#RewriteCond %{REQUEST_fileNAME} !'.php -f
#RewriteRule .* index.php
AddType text/html .asp
AddHandler application/x-httpd-php .page
php_value include_path "./php:/php/"

然而,我在自定义 php 中进行了更改.ini在 php 中关闭了短标签 [仅用于测试],但它没有选择它,而是显示 php 代码。

任何帮助都值得赞赏;这将是非常有用的!

(请记住,这个Apache安装是一个开发/测试安装)

如果您使用的是php_flag那么您可能正在使用mod_php5。 此功能不支持自定义"php.ini"文件。 您需要使用 suPHP 或 equiv,因为php.ini仅在 PHP 启动时加载,这不是针对 mod_php5 和 FCGI 的每个请求

但是,由于您使用的是 PHP 5.3,因此您还可以使用 .user.ini 文件

,这些文件是按请求解析的。

很多时候,您可能会觉得需要对 php.ini 中指定的不同站点(在同一服务器上运行)进行不同的设置。因此,您开始使用 ini_set() 或 .htaccess 在 php 文件中进行更改以覆盖这些设置。在本操作指南中,我将告诉您如何通过为每个网站提供单独的 php.ini 文件来解决具有不同 php 设置的问题。

因此,让我们假设我有一个网站,文档根目录为/var/www/html/example/,域为 www.example.com。出于测试目的,您可以在/var/www/html/example/phpinfo 中创建一个小文件.php

<?php
phpinfo();
?>

现在运行 http://example.com/phpinfo.php 它将显示当前的 php 设置。

现在将 php.ini 文件从/etc/php.ini 文件复制到/var/www/html/example。

[root]# cp/etc/php.ini/var/www/html/example #For Fedora users

[chia]$ sudo cp/etc/php5/apache2/php.ini/var/www/example # for Debian and Ubuntu

现在,我们只需要一个简单的技巧来告诉 apache 在哪里可以找到这个网站的 php 设置。您需要在配置文件中进行此小更改。

<VirtualHost 10.24.11.2:80>
ServerName example.com
ServerAlias www.example.com
PHPINIDir /var/www/html/example
</VirtualHost>

PHPINIDir 应该是文件 php.ini 所在的目录。

在此之后重新启动 apache

[root]# service httpd restart # for Fedora/Redhat/CenOS

基于 Fedora/Redhat/CenOS 的系统

[chia]$ sudo apache2 restart # for 基于 Debian/Ubuntu 的系统