[PHP] include_path kann nicht gesetzt werden

Die darin enthaltene include_path-Anweisung, schreibt Confixx dann automatisch ausserhalb der VHost-Konfiguration, ist somit also global gültig. Das macht für mich soviel Sinn, wie ein Fahrrad für Fische :roll: Vor allem, nachdem sich der include_path bei aktuellen PHP-Versionen nicht mehr ändern lässt, wenn er an einer Stelle zuvor schonmal per php_admin_value definiert wurde. Confixx definiert das Ding global, was soviel heisst, dass ich den include_path für keinen Kunden mehr ändern kann, auch nicht per .htaccess oder HTTP-Spezial, da die Kunden-VHosts erst nach der mhost.conf geladen werden.

Logischer Schluss:
Entweder packe ich die Anweisung in der mhost.conf innerhalb der VHost-Anweisungen rein oder ich lösche das ganze.

Ich glaube du weisst noch nicht wie Apache mit sowas umgeht? Es gilt immer das Nachrang-Prinzip. Die zuletzt geladene Anweisung gilt und überschreibt ggf. älteres. Deswegen ists auch ganz logisch das erst die (globale) mhost, dann die (schon speziellere) Kunden-VHost und danach die (noch speziellere) mögliche .htacccess Datei geladen wird.

Desweiteren: Wenn du dir mal die phpinfo() anschaust wirst du merken, dass dort ein "globaler" und ein "lokaler" Wert für include_path gesetzt ist. Logischerweise sind die meist gleich weil die meisten Leute gar nicht auf die Idee kommen den separat zu setzen. Aber glaube mir ich hab beide schon mal separat gesetzt und es funktioniert. Sowohl über den HTTP-Spezial (musst natürlich gucken darfst nich anklicken "für alle gleichsetzen" wenn du es nicht für alle gleich haben willst - oder umgedreht) als auch per .htaccess.

Was natürlich ganz richtig ist ist, dass, wenn ein Kunde mit eigener .htaccess und/oder eigenem php_admin_value das Ding neu definiert bist aussen vor! Aber das wärst du ob nun mit oder ohne selbstgesetztem Wert auch so. ;)
 
Und was bedeutet dann das 60? :roll:

Naja bei chmod hast du ja auch 3 Werte die dargestellt werden als z.B. 777. Die erste 7 ist dabei der User, der zweite gilt für die Gruppe und der dritte Global für den Rest!

Bei ner 60 tippe ich jetz einfach mal das die 6 für den User (nicht den "Webuser" sondern der Unix-Account der die PHP-Scripte ausführt!) steht, die 0 für entweder den gesamten Rest oder die Gruppe (es ist unwahrscheinlich das der gleiche include_path für alle "Gäste" ebenso gilt deswegen vermute ich dort keinen Wert).

Oder halt im Rahmen/Sinne des Global/Lokal Values. Also Global lesen/schreiben (ausführen is ja bei ner Variablen quatsch deswegen halt keine 7) und "lokal" (also auf User-/Script-Ebene) keine Berechtigung für lesen, schreiben oder ändern.

Ich kann deswegen jetzt nur vermuten, weil meine PHP-Hilfe an der Stelle auch nicht mehr hergibt. Allerdings tendiere ich zu der global/lokal Variante...
 
Ich glaube du weisst noch nicht wie Apache mit sowas umgeht? Es gilt immer das Nachrang-Prinzip. Die zuletzt geladene Anweisung gilt und überschreibt ggf. älteres. Deswegen ists auch ganz logisch das erst die (globale) mhost, dann die (schon speziellere) Kunden-VHost und danach die (noch speziellere) mögliche .htacccess Datei geladen wird.

Ich glaube eher, dass du nicht auf aktuellem Stand bist...
Im Prinzip ist das richtig, was du hier schreibst, nur in diesem speziellen Fall eben nicht.

Wie hier, weiter oben, auch schon erwähnt wurde, kann man ab PHP 5.2.5 den include_path nicht mehr nachträglich ändern, wenn dieser an vorheriger Stelle schonmal per php_admin_value gesetzt wurde. Confixx legt den include_path per php_admin_value global fest und deshalb lässt sich dieser an späterer Stelle nicht mehr ändern, vor allem nicht im Script per ini_set(). Scripte, die darauf angewiesen sind, den include_path zur Laufzeit zu ändern, funktionieren mit dieser überflüssigen Confixx-Konfiguration nicht (z.B. bei mir damals OpenX). Auch die Änderung des include_path per HTTP-Spezial brachte hier keine Besserung, denn der neue include_path-Parameter im VHost wurde schlicht und einfach ignoriert und das Script lief erst als ich die mhost.conf angepasst hatte. Das sind Fakten...

Da solltest du dich vielleicht mal aktuell informieren ;)
 
Ich glaube du weisst noch nicht wie Apache mit sowas umgeht? Es gilt immer das Nachrang-Prinzip. Die zuletzt geladene Anweisung gilt und überschreibt ggf. älteres. Deswegen ists auch ganz logisch das erst die (globale) mhost, dann die (schon speziellere) Kunden-VHost und danach die (noch speziellere) mögliche .htacccess Datei geladen wird.
Ich glaube, du weißt nicht worum es hier gerade geht. Du hast Recht, normalerweise gilt das Nachrang-Prinzip, aber nicht in diesem Fall. PHP lässt das setzen eines include_path seit Version 5.2.5 nur noch zu, wenn in keiner höheren Ebene bereits ein include_path gesetzt ist (php.ini ausgenommen)!


Ich kann deswegen jetzt nur vermuten, weil meine PHP-Hilfe an der Stelle auch nicht mehr hergibt. Allerdings tendiere ich zu der global/lokal Variante...
Vermutungen helfen nichts, was du vermtuest ist nämlich falsch. Ich kann die Variable nicht setzen, nur lesen!
 
Ich glaube, du weißt nicht worum es hier gerade geht. Du hast Recht, normalerweise gilt das Nachrang-Prinzip, aber nicht in diesem Fall. PHP lässt das setzen eines include_path seit Version 5.2.5 nur noch zu, wenn in keiner höheren Ebene bereits ein include_path gesetzt ist (php.ini ausgenommen)!

Hmm wäre mir gänzlich neu. Ich benutze teilweise sogar 5.2.10 und habe für mehrere meiner Projekte diverse include_path-"Ergänzungen", die ich sehr wohl in nachrangigen Dateien setze. Kann aber auch wieder daher kommen da ich es als CGI einsetze und irgendwie für jeden "host" ne eigene CGI-PHP-Ini habe. ;)

Vermutungen helfen nichts, was du vermtuest ist nämlich falsch. Ich kann die Variable nicht setzen, nur lesen!

Lesen von wo denn? Von deinem Script aus? Natürlich geht das. Dein Script wird ja durch den "erlaubten" Webuser gesteuert. Und nicht zuletzt MUSS PHP es auf dieser Ebene auslesen, wie soll es denn sonst auf eben dein Script Anwendung finden?? ;)

Heisst aber eben noch lange nicht, dass du es auf Scriptebene setzen kannst. es gibt einige Variablen die kann man aus Sicherheitsgründen nur in einer INI oder sonstigen globalen Datei abändern.

Vergleiche: https://de2.php.net/manual/de/configuration.changes.modes.php Für die Berechtigungen und... https://de2.php.net/manual/de/ini.list.php Für die Direktiven.

Ach was mir gerad einfällt... oftmals zickt der include_path rum, wenn safe_mode on ist und open_basedir den include_path nicht enthällt.

Sorry das mir das erst jetzt einfällt. Stimmt die Probleme hatte ich unter Confixx auch. Ich musste IMMER beides abändern... >.<