]> gitweb.fluxo.info Git - semanticscuttle.git/commitdiff
Fix bug #3431742: open_basedir problems with /etc/ config files
authorChristian Weiske <cweiske@cweiske.de>
Wed, 2 Nov 2011 05:42:14 +0000 (06:42 +0100)
committerChristian Weiske <cweiske@cweiske.de>
Wed, 2 Nov 2011 05:42:14 +0000 (06:42 +0100)
doc/ChangeLog
src/SemanticScuttle/Config.php

index 2090953ba2b0ff7b55c7469522f3d0e8a8409e88..35cb883a4344edba8d2776a649c05d21ea3e6212 100644 (file)
@@ -11,6 +11,7 @@ ChangeLog for SemantiScuttle
 - Fix bug #3388219: Incorrect URL when cancelling tag2tag-actions
 - Fix bug #3399815: PHP error in opensearch API in 0.98.3
 - Fix bug #3407728: Can't delete users from admin page
+- Fix bug #3431742: open_basedir problems with /etc/ config files
 - Implement request #3403609: fr_CA translation update
 
 
index 07733103e6a9c79c8174b9c47842c0998e673dbe..756c303968f55b9296159dc64e7089519ea69190 100644 (file)
@@ -62,6 +62,9 @@ class SemanticScuttle_Config
      *
      * Paths with host name have priority.
      *
+     * When open_basedir restrictions are in effect and /etc is not part of
+     * the setting, /etc/semanticscuttle/ is not checked for config files.
+     *
      * @return array Array with config file path as first value
      *               and default config file path as second value.
      *               Any may be NULL if not found
@@ -72,12 +75,23 @@ class SemanticScuttle_Config
         $host = basename($_SERVER['HTTP_HOST']);
         $datadir = $this->getDataDir();
 
-        $arFiles = array(
-            $datadir . 'config.' . $host . '.php',
-            '/etc/semanticscuttle/config.' . $host . '.php',
-            $datadir . 'config.php',
-            '/etc/semanticscuttle/config.php',
-        );
+        $openbase = ini_get('open_basedir');
+        if ($openbase && strpos($openbase, '/etc') === false) {
+            //open_basedir restrictions enabled and /etc not allowed?
+            // then don't look in /etc for config files.
+            // the check is not perfect, but it covers most cases
+            $arFiles = array(
+                $datadir . 'config.' . $host . '.php',
+                $datadir . 'config.php',
+            );
+        } else {
+            $arFiles = array(
+                $datadir . 'config.' . $host . '.php',
+                '/etc/semanticscuttle/config.' . $host . '.php',
+                $datadir . 'config.php',
+                '/etc/semanticscuttle/config.php',
+            );
+        }
 
         $configfile = null;
         foreach ($arFiles as $file) {