2

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

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 安装是一个开发/测试安装)

4

2 回答 2

5

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

但是,由于您使用的是 PHP 5.3,因此您还可以使用.user.ini 文件,这些文件是根据每个请求进行解析的。

于 2012-04-14T15:56:45.887 回答
2

很多时候,您可能会觉得需要为不同的站点(在同一台服务器上运行)进行不同的设置,如 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 #对于fedora用户

[chia]$ sudo cp /etc/php5/apache2/php.ini /var/www/example # 用于 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 # 适用于基于 Fedora/Redhat/CenOS 的系统

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

于 2014-04-18T16:45:59.503 回答