From c8cf71f8d56acc757d7a9c7540215c88318f41dd Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Fri, 22 Jan 2010 09:52:22 -0500 Subject: [PATCH] made php open_basdir configurable per website. Added a global default for the .htaccess allow_override setting. --- server/plugins-available/apache2_plugin.inc.php | 21 ++++++++++++++------- 1 files changed, 14 insertions(+), 7 deletions(-) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 6e6e0fd..2aecc1d 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -555,6 +555,7 @@ $vhost_data["web_basedir"] = $web_config["website_basedir"]; $vhost_data["security_level"] = $web_config["security_level"]; $vhost_data["allow_override"] = ($data["new"]["allow_override"] == '')?'All':$data["new"]["allow_override"]; + $vhost_data["php_open_basedir"] = ($data["new"]["php_open_basedir"] == '')?$data["new"]["document_root"]:$data["new"]["php_open_basedir"]; // Check if a SSL cert exists $ssl_dir = $data["new"]["document_root"]."/ssl"; @@ -706,12 +707,15 @@ $fcgi_tpl = new tpl(); $fcgi_tpl->newTemplate("php-fcgi-starter.master"); - $fcgi_tpl->setVar('php_ini_path',$fastcgi_config["fastcgi_phpini_path"]); - $fcgi_tpl->setVar('document_root',$data["new"]["document_root"]); - $fcgi_tpl->setVar('php_fcgi_children',$fastcgi_config["fastcgi_children"]); - $fcgi_tpl->setVar('php_fcgi_max_requests',$fastcgi_config["fastcgi_max_requests"]); - $fcgi_tpl->setVar('php_fcgi_bin',$fastcgi_config["fastcgi_bin"]); - $fcgi_tpl->setVar('security_level',$web_config["security_level"]); + $fcgi_tpl->setVar('php_ini_path',escapeshellcmd($fastcgi_config["fastcgi_phpini_path"])); + $fcgi_tpl->setVar('document_root',escapeshellcmd($data["new"]["document_root"])); + $fcgi_tpl->setVar('php_fcgi_children',escapeshellcmd($fastcgi_config["fastcgi_children"])); + $fcgi_tpl->setVar('php_fcgi_max_requests',escapeshellcmd($fastcgi_config["fastcgi_max_requests"])); + $fcgi_tpl->setVar('php_fcgi_bin',escapeshellcmd($fastcgi_config["fastcgi_bin"])); + $fcgi_tpl->setVar('security_level',intval($web_config["security_level"])); + + $php_open_basedir = ($data["new"]["php_open_basedir"] == '')?$data["new"]["document_root"]:$data["new"]["php_open_basedir"]; + $cgi_tpl->setVar('open_basedir', escapeshellcmd($php_open_basedir)); $fcgi_starter_script = escapeshellcmd($fastcgi_starter_path.$fastcgi_config["fastcgi_starter_script"]); file_put_contents($fcgi_starter_script,$fcgi_tpl->grab()); @@ -759,7 +763,10 @@ $cgi_tpl->newTemplate("php-cgi-starter.master"); // This works, because php "rewrites" a symlink to the physical path - $cgi_tpl->setVar('open_basedir', $data["new"]["document_root"]); + $php_open_basedir = ($data["new"]["php_open_basedir"] == '')?$data["new"]["document_root"]:$data["new"]["php_open_basedir"]; + $cgi_tpl->setVar('open_basedir', escapeshellcmd($php_open_basedir)); + $cgi_tpl->setVar('document_root', escapeshellcmd($data["new"]["document_root"])); + // This will NOT work! //$cgi_tpl->setVar('open_basedir', "/var/www/" . $data["new"]["domain"]); $cgi_tpl->setVar('php_cgi_bin',$cgi_config["cgi_bin"]); -- Gitblit v1.9.1