Skip to content

Gehorsam

Ein Kunde hatte noch Probleme mit seinen PHP-Skripten, und sein Programmierer war nicht greifbar. Wir hatten ihm dann unter die Arme gegriffen und die Short-Tags etc. ersetzt. Er fragte uns, wie er sich revanchieren konnte:
Kunde: Hilft (...) evtl. ein link auf unserer Seite?

Wir: Das wäre ein Traum :-)
Die Antwort zeugt von blindem Gehorsam:
Wird gemacht, Chef!
Ein Traum :-)

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Dirk

Die Wohl fieseste Änderung ist wohl, dass Variablen den Arrays $_POST und $_GET nicht mehr automatisch verfügbar sind. Bis man sich sein System entsprechend angepasst und alle Variablen von $var auf $_POST['var'] oder $_GET['var'] umgeschrieben hat, kann man das hier machen:

extract ($_GET);
extract ($_POST);

Nicht sehr fehin, aber als Notlösung funktioniert es. Nun werden alle Variablen aus $_POST und $_GET herausgeholt, und sind direkt verfügbar.

Btw. mal leicht OT, warum endet ...

include('http://example.com/blubb.php?foo=bar');
if(!$array['var']) { echo 'error'; return; }
else { dosomething($array['var']); }

... eigentlich damit, dass „error“ ausgegeben wird? Das, was inkludiert wird, ist PHP-Code, und erzeugt unter anderem ein Array $array, dessen einer Eintrag 'var' ist. Bis zum Umstieg auf PHP5 funktionierte das so noch.

Ja, ich weiß, dass das ganz fui-bäh ist, aber der Code ist nur ein Ausschnitt. Und ja, ich darf auf http://example.com/blubb.php?foo=bar zugreifen, und ja, ich weiß, dass PHP auf dem Server geparst wird, was ich aufrufe, gibt trotzdem PHP-Code zurück.

Manuel Schmitt (manitu)

Evtl. hast Du die fopen-Wrapper nicht wieder aktiviert, somit scheitert es schon beim imclude()

Dirk

ini_set('allow_url_fopen', 'on');

Ist vor dem include() gesetzt. Und zwar sowohl auch zusätzlich probiert mit 1 und TRUE, und was ich sonst noch so alles im Netz finden konnte. Schön nacheinander durchprobiert, aber immer das Selbe :(

Interessant ist auch, dass ein PHP-Script, das lediglich

echo 'start';
error_reporting(E_ALL);
ini_set('allow_url_fopen','on');
include('http://heise.de');
echo 'ende';

als Inhalt hat, komplett ohne Ausgabe bleibt, bzw. nur „startende“ ausgibt. Und zwar völlig unabhängig davon, ob (und was bei) allow_url_fopen gesetzt ist, oder was ich bei error_reporting() reinschreibe.

http://kamerastars.de/test.php

Chris

laut http://de2.php.net/manual/de/ini.php ist allow_url_fopen eine PHP_INI_SYSTEM Einstellung.

Das Ding kann man im Script selber nicht aktivieren, sondern der Eintrag kann nur in php.ini oder httpd.conf gesetzt werden.

Manuel Schmitt (manitu)

Das ist in unserem PHP anders, wir haben das gepatcht

Manuel Schmitt (manitu)

bei uns tut das 1a!

Was sagt denn phpinfo() nach dem ini_set() ?

Dirk

Mit Angabe im PHP-Skript:

allow_url_fopen On Off


Ohne Angabe im PHP-Script

allow_url_fopen Off Off

Manuel Schmitt (manitu)

Ich habe das gerade nochmal bei uns geprüft: Es geht 1a. Das läuft auch sicher auf einem Webspace bei uns?

Dirk

Ja, definitiv. Woanders habe ich keinen Webspace.

Diese Datei: http://rafb.net/p/mWgNTj28.html
Liegt hier: http://www.kamerastars.de/test.php

Und die einzige Ausgabe ist: „startende“ (Ohne die Anführungszeichen).

Manuel Schmitt (manitu)

Schreibst Du bitte mal den Support?

Dirk

Nur, dass es seit dem wechsel auf PHP5 gar nicht mehr geht :(

Manuel Schmitt (manitu)

Versuch bitte einmal:

ini_set("allow_url_fopen", "1");

(also "1" statt "on")

Dirk

Selbe Datei, deine Zeile per Copy&Paste übernommen. Einzige Ausgabe „startende“ :(

Dirk

Nur noch mal für alle, die es jetzt hier gelesen haben, und ähnliche Probleme haben.

Das scheint ein Feature/Bug von PHP5 zu sein, dass es in dieser Speziellen Kombination, wie ich es brauche, und wie es in PHP4 funktionierte, nun nicht mehr geht.

readfile(); hingegen geht, wenn auch für mich persönlich nicht so, wie ich es bräuchte, und ich werde mein Skript anpassen.

Kommentar schreiben

Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA

BBCode-Formatierung erlaubt
Formular-Optionen