Setup a per-user php.ini to allow open_basedir with suPhp
by admin on Sep.07, 2009, under DirectAdmin
new way:
If you wish to use per-user php.ini files in:
/home/username/php.ini
then you can use this guide to add the code:
SetEnv PHP_INI_SCAN_DIR /usr/local/directadmin/data/users/|USER|/php/
to the VirtualHost entires for that domain and it’s subdomains. This will tell suPhp to look in that path for a php.ini (which you’ll need to ensure is there).
Note for complete usage of this setting, a how-to has been created here, which should be consulted with first: http://www.directadmin.com:80/forum/showpost.php?p=156958&postcount=25
If you only want to set a custom php.ini for individual users, and not all users, then you can use this guide to insert just the one line of code into the VirtualHost entires for that domain.
Related:
http://www.php.net/ini.sections
Improved php.ini handling in 5.3.0
old way:
In order to setup a php.ini for each user with suPhp (installed by custombuild), edit:
/etc/httpd/conf/extra/httpd-suphp.conf
Find this line:
suPHP_ConfigPath /usr/local/etc/php5/cgi/
and comment it out by changing it to
#suPHP_ConfigPath /usr/local/etc/php5/cgi/
(just add a # in front of it).
Doing this will let suPhp be more flexible in using a different php.ini file. By default, it will still fall back to the /usr/local/etc/php5/cgi/php.ini if nothing else is set, but by not setting it, it allows us to change it (suPhp only accepts the first call of that command).
The next step is to tell apache where to find the php.ini that you want.
Go to:
Admin Level -> Custom httpd configuration -> domain.com
Insert the following 1 line into the top textarea:
suPHP_ConfigPath |HOME|/
exactly as written, then hit save. You can do this for as many single domains as you wish.
Note that you can also make this a global change by adding that line to the virtualhost templates using this guide:
help.directadmin.com/item.php?id=2.
Restart apache when you’re done.
Don’t forget to actually add a php.ini file into /home/username/php.ini and save it with root as the owner if you don’t want the user changing it at all. In that php.ini file, you can specify a custom open_basedir path, thus preventing the user from wandering about the system. Automating a new php.ini can be done with the user_create_post.sh script.
Related posts:
- Allow php scripts to work under ~username when using suPhp (custombuild) By default, suPhp is compiled in "paranoid" mode. This means...
- How to modify the open_basedir setting for one domain. To change the open_basedir value when using php in CLI...
- Swapping between php versions when using suPHP and CLI with custombuild If you have both suPHP and CLI installed on your...
- How to setup per-domain Aliases If you want to disable /webmail for just one domain...
- Using a custom VirtualHost template If you wish to change the setup of the VirtualHosts...
Related posts brought to you by Yet Another Related Posts Plugin.
