How to Specify a Custom php.ini for a Website (Apache2 with mod_php)

How to Specify a Custom php.ini for a Website (Apache2 with mod_php)

This short article explains how to specify a custom php.ini for a website running on Apache2 with mod_php. That way, each website can have it's own php.ini instead of having to use the server's default one.

1 Preliminary Note

I'm using the website www.example.com here with the document root /var/www/web1/web here.

2 Getting Details About Your PHP Installation

We will now create a small PHP file (info.php) in the document root and call it in a browser. The file will display useful details about our PHP installation, such as the used php.ini file.

nano /var/www/web1/web/info.php

Now we call that file in a browser (e.g. http://www.example.com/info.php):

Apache php.ini file

As you see, the website is currently using the /etc/php/8.1/apache2/php.ini file.

3 Custom php.ini For a WebSite

I will copy the default php.ini (/etc/php/8.1/apache2/php.ini on Debian/Ubuntu; /etc/php.ini on Fedora/CentOS) to the /etc/php/web1/ directory and make www.example.com use the php.ini from the /etc/php/web1/ directory:


mkdir /etc/php/web1/
cp /etc/php/8.1/apache2/php.ini /etc/php/web1/


mkdir /etc/php/web1/
cp /etc/php.ini /etc/php/web1/

(You can now modify /var/www/web1/php.ini to your liking.)

Then open the vhost configuration for the www.example.com website and add a PHPINIDir line to it:

PHPINIDir /etc/php/web1
[...] </VirtualHost>

PHPINIDir must contain the directory where the php.ini file for the website is located.

Restart Apache afterward:


service apache2 restart


service httpd restart

Now call the info.php file again in a browser (http://www.example.com/info.php):

using a custom php.ini path with Apache

The Configuration File (php.ini) Path line should now show the new php.ini.


Introducing BM Cloud

Try BM Cloud today and get free 5GB cloud storage, free video conferencing with upto 50 members, online office suite and collaboration tools