ini_set zeigt keine Wirkung - Grund gesucht

HugoHorst

New Member
Hallo,

ich sitze an einem etwas merkwürdigen Problem. Nach der Neuinstallation meines Servers funktioniert ini_set nicht mehr so wie es sollte.

Es geht um die Erweiterung des include_path:

Code:
echo ini_set("include_path",ini_get("include_path").":".dirname(__FILE__)."/includes/")."<br/>";

Diese Funktion produziert weder eine Fehlermeldung (disabled for security reasons) im Skript noch in sämtlichen Apache Logs. Es zeigt einfach schlichtweg keine Wirkung, sodass der Include-Path so bestehen bleibt wie gehabt. Rückgabewert der Funktion ist also FALSE.
Ich habe diese Funktion nicht in der php.ini deaktiviert (disable_functions)

Könnte der Suhosin-Patch dafür sorgen, dass es nicht funktioniert?
Allerdings ist eine /etc/php5/conf.g/suhosin.ini nicht vorhanden
Der Safe Mode ist deaktiviert siehe Virtualhost

Code:
<VirtualHost XX.XX.XX.XX:80>
  ServerName www.meinedomain.de
  DocumentRoot /home/www/web208/html
  SuexecUserGroup web208 web208
  ScriptAlias /cgi-bin/ /home/www/web208/html/cgi-bin/
  php_admin_value open_basedir /home/www/web208/html/:/home/www/web208/phptmp/:/home/www/web208/files/:/home/www/web208/atd/
  php_admin_value file_uploads 0

<Directory "/home/www/web208/html">
AllowOverride All
Options +FollowSymLinks +SymLinksIfOwnerMatch

php_admin_flag safe_mode Off

DirectoryIndex index.php index.html index.htm index.php3 index.php4 index.shtml index.shtm index.sht

</Directory>
</VirtualHost>

Über Ideen und Vorschläge wo ini_set noch zensiert werden kann wäre ich sehr dankbar. Ich erkenne derzeit keine Möglichkeit mehr wo die Deaktivierung noch geschehen kann.

Vielen Dank im Voraus

Anbei die phpinfo() - vielleicht nützt es ja etwas:
http://img197.imageshack.us/img197/913/phpinfoz.jpg
 
Danke für eure Antworten, jedoch bringen die mich nicht weiter.
Die echo Ausgabe stammt aus einem Testskript und die Dokumentation zur Funktion kenne ich ebenfalls.

Wie bereits geschrieben funktioniert das setzen der Variable nicht, was ohne Fehlermeldung oder sonstige Anzeichen einfach blockiert wird. Darum hatte ich gehofft einen Hinweis zu bekommen, wo die Funktion noch geblockt werden kann außer wenn man sie in function_disable in der php.ini erwähnt.

Nochmal zur Verdeutlichung:

Code:
<?
ini_set('include_path', '/inc');
echo ini_get('include_path');

?>

ergibt als Ausgabe: "." (ohne Anführungszeichen)
also der Wert der bereits vor dem ini_set im include_path stand.

Hat jemand hilfreiche Tipps?
 
Laut offizieller PHP-Doku:
you may modify or set your include path at runtime using set_include_path().
Versuch mal set_include_path()

Den bestehenden Pfad kann man erweitern (empfohlen sofern nicht anders benoetigt) indem man folgendes anwendet:
Code:
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
 
Wie du sicher in meinem ersten Post gelesen hast, geht es hier nicht um die Programmierung sondern um die serverseitige Restriktion, warum diese nicht erlaubt wird.

Auch set_include_path() erfährt die gleiche Wirkung, nämlich garkeine.
Es wird einfach false zurückgegeben ohne Fehlermeldungen

So langsam gehen mir die Ideen aus, wo ich in der Serverkonfiguration anpacken muss um dieses setzen zu erlauben.

Auch andere Dinge wie:

Code:
<?php
echo ini_get('display_errors');

if (!ini_get('display_errors')) {
    ini_set('display_errors', 1);
}

echo ini_get('display_errors');
?>

funktionieren nicht, da schlichtweg das setzen von Systemvariablen verboten wird ohne Fehlermeldung. Jemand noch eine Idee wer dafür sorgen könnte?
 
Problem gelöst:

In der confixx_mhost.conf
gab es ganz zu Anfang einen Eintrag:

Code:
php_admin_value include_path .

Wenn in httpd ein Wert gesetzt wird, kann dieser nicht per PHP zur Laufzeit abgeändert werden. Wird dieser auskommentiert gilt für global der in der php.ini festgelegte Wert und lokal kann dieser auch per PHP abgeändert werden.

Vielen Dank für eure Hilfe
 
Zur Information an ueber-Google-den-Thread-Finder:
Vom Webserver uebergebene php_admin_value koennen nicht mehr zur Laufzeit ueberschrieben werde, php_value hingegen schon.
 
Back
Top