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

时间:2012-04-14 15:29:55

标签: apache .htaccess customization php

我在Windows 7上运行Apache 2.26,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中自定义php.ini进行了更改,以便关闭短标签[仅用于测试]但它没有提取它,而是显示了PHP代码。

任何帮助都表示赞赏;它会非常有用!

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

2 个答案:

答案 0 :(得分:5)

如果您使用的是php_flag,那么您可能正在使用mod_php5。此不支持自定义'php.ini'文件。您需要使用suPHP或equiv,因为php.ini仅在PHP启动时加载,而对于mod_php5和FCGI,这不是 per-request

但是,因为您使用的是PHP 5.3,所以您也可以使用.user.ini files,它们是基于每个请求进行解析的。

答案 1 :(得分:1)

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

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

<?php
phpinfo();
?>

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

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

[root] #cp /etc/php.ini / var / www / html / example #For fedora用户

[chia] $ sudo cp /etc/php5/apache2/php.ini / var / www / example#for Debian和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 based systems

[chia] $ sudo apache2 restart#for Debian / Ubuntu based systems