include() und require() funktionieren nicht

Bitte erinnere mich morgen nochmal dran, da kommt meine Kristallkugel aus der Reinigung zurück und ich kann die Fehlermeldung dann selber nachlesen.
 
display_errors ist Off, probier das mal zu aktivieren (per ini_set oder per php_admin_flag in der .htaccess).
 
Dein Hoster hat keine Ahnung :biggrin:

Laut deiner phpinfo() steht allow_url_fopen auf on, womit dessen Aussage absoluter Müll ist.

Ausserdem greift dein require() nicht auf einen externen Server per HTTP oder FTP zu, sondern auf einen lokalen Pfad.

Der Fehler liegt wahrscheinlich darin, dass der Pfad nicht stimmt und das einzubindende Script deshalb nicht gefunden wird. Aufgrund deiner PHP-Konfiguration (display_errors = off) werden keine Fehlermeldungen im Browser ausgegeben, was aber nicht heisst, dass kein Fehler da ist ;-)
 
Die Anfuehrungszeichen stimmen eh vorn und hinten ned :mrgreen:

Gib den Pfad mal relativ an. Ich vermut mal, es liegt am include_path, der nur auf ./ steht.
 
Code:
<?php require([COLOR=Gray][s]"[/s][/COLOR]$_SERVER[[COLOR=Red]'[/COLOR]DOCUMENT_ROOT[COLOR=Red]'[/COLOR]][COLOR=Red]."[/COLOR]/counter/index.php"); ?>
 
Code:
[COLOR=Red][B]"[/B][/COLOR]$_SERVER[DOCUMENT_ROOT]/counter/index.php[COLOR=Red][B]"[/B][/COLOR]
=
Code:
$_SERVER[[COLOR=Red][B]'[/B][/COLOR]DOCUMENT_ROOT[COLOR=Red][B]'[/B][/COLOR]][COLOR=Red][B].[/B][/COLOR] [COLOR=Red][B]"[/B][/COLOR]/counter/index.php[COLOR=Red][B]"[/B][/COLOR]
Ist doch beides erlaubt?
 
Das Erstere nicht. Mit entsprechenden error_reporting fliegt dir auch ein E_NOTICE um die Ohren, weil die Konstante DOCUMENT_ROOT nicht gesetzt is.

Du kannst die Variable zwischen die Anführungszeichen setzen und Performance verschwenden, ja, das geht. Also als "Alternative":
PHP:
<?php require("{$_SERVER['DOCUMENT_ROOT']}/counter/index.php"); ?>
 
doch, dass erstere ist erlaubt. Wenn du das Array einklammerst, so wie du es bei deinem jetzigem Beispiel gemacht hast, müssen die Anführungszeichen tatsächlich so gesetzt werden (wusste ich nicht, aber beim Ausprobieren kam sonst tatsächlich ein E_NOTICE)
Wenn du die Klammern aber nicht setzt, also nicht
Code:
[COLOR=Black]"[B][COLOR=Red]{[/COLOR][/B]$_SERVER['DOCUMENT_ROOT'][B][COLOR=Red]}[/COLOR][/B]/counter/index.php"[/COLOR]
sondern, wie von Eddy_dr_Zivi gemacht, das ganze ohne geschweifte Klammer schreibst
Code:
"$_SERVER[DOCUMENT_ROOT]/counter/index.php"
, musst du die ' Zeichen weglassen, sonst haut dir PHP ein
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
um die Ohren

Also:
Code:
$_SERVER[[B][COLOR=Red]'[/COLOR][/B]DOCUMENT_ROOT[COLOR=Red][B]'[/B][/COLOR]][COLOR=Red][B]. "[/B][/COLOR]/counter/index.php[COLOR=Red][B]"[/B][/COLOR]
=
Code:
[B][COLOR=Red]"{[/COLOR][/B]$_SERVER[[COLOR=Red][B]'[/B][/COLOR]DOCUMENT_ROOT[COLOR=Red][B]'[/B][/COLOR]][COLOR=Red][B]}[/B][/COLOR]/counter/index.php[COLOR=Red][B]"[/B][/COLOR]
=
Code:
[COLOR=Red][B]"[/B][/COLOR]$_SERVER[DOCUMENT_ROOT]/counter/index.php[COLOR=Red][B]"[/B][/COLOR]
Bei letzterem Beispiel betrachtet PHP die Variable nicht als Konstante, sondern als Variable.
 
Bei letzterem Beispiel betrachtet PHP die Variable nicht als Konstante, sondern als Variable.
Das wäre mir verdammt neu. Quelle bitte 8O

PHP warnt sogar davor, das nicht zu tun, mit der Begründung, wenn in zukünftigen PHP-Version Konstanten hinzugefügt werden, die bei Update von PHP solche Scripts zu unerwünschten Ergebnisse führen. Logisch.
Why is $foo[bar] wrong?

Always use quotes around a string literal array index. For example, $foo['bar'] is correct, while $foo[bar] is not. But why?
[...]

This is wrong, but it works. The reason is that this code has an undefined constant (bar) rather than a string ('bar' - notice the quotes). [...]
Quelle: https://de2.php.net/manual/en/language.types.array.php

Bitte: Nicht alles, was funktioniert, ist richtig! Schreibt euren Code halt einfach einmal ordentlich und diskutiert nicht rum, dass der falsche Code ja trotzdem funktioniert. Es ist falsch! :roll:
 
Zuletzt bearbeitet:
naja, so hässlich finde ich es eigentlich nicht, auch wenn PHP bei deiner Variante minimal weniger zeit zum parsen braucht. Aber ich habe ja auch nicht behauptet, dass es besonders schön ist, aber es halt nicht falsch.