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

非 Y 不嫁゛ 提交于 2019-12-04 01:48:48

问题


I'm running Apache 2.26, on Windows 7 with PHP 5.39 mod_ssl/2.2.6 OpenSSL/0.9.8g .

PHP works fine, so does Apache.

However, I want to try and create custom php.ini files per directory, for my test sites.

I could - and did - use php_flag but would like to try to create a custom php.ini file that works. I tried to Google this, but couldn't find anything relevant.

This is my current .htaccess for C:/www/vhosts/localhost/testsite1:

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/"

Yet, I made a change in the custom php.ini within the php to have short tags off [for testing only] but it didn't pick it up, the php code showed instead.

Any help is appreciated with this; it'll be extremely useful!

(bear in mind, this Apache install is a development/testing one)


回答1:


If you are using php_flag then you are probably using mod_php5. Custom 'php.ini' files aren't supported with this. You would need to use suPHP or equiv as the php.ini is only loaded at PHP startup, and this isn't per-request for mod_php5 and FCGI.

However, since you are using PHP 5.3 you can also use .user.ini files which are parsed on a per-request basis.




回答2:


Many times you might feel that you require a different settings for different sites (running on the same server) as specified in php.ini . So you start making changes in your php files using ini_set() or .htaccess to override those settings. In this howto, I will tell you how to solve this problem of having different php settings by having separate php.ini files for each website.

So, lets assume that I have a website with document root as /var/www/html/example/ with domain as www.example.com. For testing purpose you can create a small file in /var/www/html/example/phpinfo.php

<?php
phpinfo();
?>

Now run http://example.com/phpinfo.php it will display current php settings.

Now copy the php.ini file from /etc/php.ini file to your /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

And now, we just need a simple trick to tell apache where to find the php settings for this website. You need to make this small change in the configuration file.

<VirtualHost 10.24.11.2:80>

ServerName example.com

ServerAlias www.example.com

PHPINIDir /var/www/html/example

</VirtualHost>

PHPINIDir should be the directory where the file php.ini resides.

Restart the apache after this

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

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



来源:https://stackoverflow.com/questions/10154796/custom-php-ini-per-directory-for-testing-sites

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!