[PHP] auto_append_file funktioniert nicht



compy

New Member
Hallo Forum,
ich habe aber bisher meine Probleme immer über die Suche gelöst aber jetzt brauch ich doch Eure Hilfe.

Und zwar möchte ich Webspace sponsorn und es soll ein Werbebanner bei den Kunden angezeigt werden.
Ich hab es schon mit mod_layout versucht aber da gab es nur Probleme mit der Anzeige und den CMS.
Jetzt habe ich auto_append_file gefunden.


in meiner php.ini steht:
auto_append_file= /home/werbung.html

werbung.html:
<h2>Hier wird die Werbung stehen</h2>



Ausgegeben wird auf der Seite folgende Fehler:
Warning: Unknown: SAFE MODE Restriction in effect. The script whose uid is 646 is not allowed to access /home/werbung.html owned by uid 0 in Unknown on line 0

Warning: Unknown: failed to open stream: Inappropriate ioctl for device in Unknown on line 0

Warning: Unknown: SAFE MODE Restriction in effect. The script whose uid is 646 is not allowed to access /home/werbung.html owned by uid 0 in Unknown on line 0

Warning: Unknown: failed to open stream: Inappropriate ioctl for device in Unknown on line 0

Fatal error: Unknown: Failed opening required '/home/werbung.html' (include_path='.:/usr/share/php:/usr/share/pear') in Unknown on line 0


Ich habe Safe_mode = off gesetzt und meiner werbung.html chmod=777 zu testzwecken gegeben.

Was mache ich falsch?



Ps. Server: Vserver - Linux Debian - Apache2
 
Last edited by a moderator:
drei Fragen/Denkansätze ...

a) Apache neu gestartet nach Änderung der Safemode-Einstellung?
b) ggfs. falsche php.ini editiert? (phpinfo prüfen, ob safemode wirklich deaktiviert ist)
c) bei Verwendung von z.B. Plesk basiertem Hosting darauf achten, wie PHP eingebunden wird - nicht immer ist eine eigene php.ini möglich bzw. bei aktueller Version bei Subdomains wirkungslos
 
Zugriffsrechte für die Datei sollten 644 sein, nicht 777, denn damit kann jeder, der Zugriff aufs System hat, diese Datei verändern.
Weiterhin erfolgt die Einbindung nur bei PHP-Dateien und verhindert die Nutzung einiger Befehle in PHP (u.a. die gerne genutzten header, setcookie u.ä.), da mit deinem Beispiel direkt eine Ausgabe erfolgt und sorgt bei zahlreichen verbreiteten Scripts für Fehler. Mod_layout o.ä. im Apache wäre also der korrekte Ansatz, da dieser sich in die Ausgabe einklinkt und nicht auf PHP beschränkt ist.
Wenn Safe-Mode aktiv ist, ist vielleicht auch open_basedir aktiv und verhindert, daß Dateien außerhalb dieses Verzeichnisses eingebunden werden dürfen.
 
Zugriffsrechte für die Datei sollten 644 sein, nicht 777, denn damit kann jeder, der Zugriff aufs System hat, diese Datei verändern.
Weiterhin erfolgt die Einbindung nur bei PHP-Dateien und verhindert die Nutzung einiger Befehle in PHP (u.a. die gerne genutzten header, setcookie u.ä.), da mit deinem Beispiel direkt eine Ausgabe erfolgt und sorgt bei zahlreichen verbreiteten Scripts für Fehler. Mod_layout o.ä. im Apache wäre also der korrekte Ansatz, da dieser sich in die Ausgabe einklinkt und nicht auf PHP beschränkt ist.
Wenn Safe-Mode aktiv ist, ist vielleicht auch open_basedir aktiv und verhindert, daß Dateien außerhalb dieses Verzeichnisses eingebunden werden dürfen.

Danke schonmal an Euch beiden.
Ich hatte vergessen zu erwähnen, dass ich ConfiXX benutze.
Ich habe mal bei "Httpd Spezial" bei ein Kunden folgendes eingetragen:

php_value auto_prepend_file /var/www/web0
php_value auto_append_file /home/werbung.html
und die PHP.ini wieder zurückgesetzt wie sie vorher war.

Die Fehlermeldungen sind zwar weg, aber leider wird die werbung.html auch nicht ausgegeben bzw. der Inhalt wird nicht angezeigt.

@danton ich hatte mod_layout schon versucht, aber wenn ich das aktiviere dann wird z.B. ein Webspell CMS nicht mehr richtig dargestellt. Daher suche ich eine Alternative.

Habt ihr sonst ein Vorschlag was ich jetzt machen könnte? Ich weiß nicht mehr weiter!:p
 
Was mir dazu auch noch einfällt: auto_append_file funktioniert nicht, wenn PHP-Scripte mit exit(); enden - was gar nicht so selten ist. Die angebene Datei wird wie bei einem require eingebunden, wenn die Haupt-PHP-Datei komplett abgearbeitet wurde - aber exit() beendet dies ja vorzeitig.
auto_prepend_file funktioniert immer, da es als erstes wie per require eingebunden wird, bevor die Haupt-PHP-Dati ausgeführt wird. Erfolg hierin aber direkt eine Ausgabe (was wie in deinem Beispiel mit einer HTML-Datei der Fall dein dürfte, stort das die Funktionen vieler PHP-Dateien.
Beide Funktionen betreffen außerdem nur PHP-Dateien, aber keine HTML-Dateien - sobald jemand eine statische Webseite ohne PHP erstellt, gibt es also keine Werbung.
Um einen Werbebanner einzubauen, sind beide Funktionen ungeeignet - du mußt Manipulationen am ausgegebenen HTML-Code der jeweiligen Seite vornehmen - und das läßt sich nur sauber durch den Webserver lösen, der ja die auszugebenden Daten von PHP (oder auch Perl, Ruby, Java, etc.) bekommt und diese entsprechend manipulieren kann - und das macht beispielsweise mod_layout für den Apache (ob es dazu Alternativen gibt, weiß ich nicht). Ich habe mod_layout noch nicht selber eingesetzt, aber seine Einrichtung dürfte nicht ganz trivial sein, da es ja selber mächtige Manipulationsmöglichkeiten bietet. Vielleicht solltest du wegen deinen Problemen mit mod_layout einfach mal hier im Forum nachfragen und dir hilft dann einer, der es nutzt.
 
MOD: Fullquote entfernt.

Das ist doch mal eine saubere antwort. So werd ich es auch machen. Mal schauen wies bei Mod_layout weitergeht. Danke für Eure hilfe damit ist das Thema erstmal abgeschlossen. :)
 
Last edited by a moderator:
Back
Top