wie man require_once() für eine PHP-Datei in WordPress zulässt
Lesezeit: 4 Minuten
Samad
Ich habe eine Website, die von WordPress erstellt wurde, und ich habe einige PHP-Dateien erstellt, die ich ausführen möchte, und aus irgendeinem Grund muss ich require_once (/wp-includes/class-phpass.php) benötigen, aber ich habe einen Fehler beim Öffnen von erforderlichen Fehlern erhalten htaccess-Datei im Stammordner und sie existiert nicht im wp-includes-Ordner, die htaccess enthält Folgendes:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
also wie löst man dieses problem?! , Vielen Dank
Bearbeiten
Mein WordPress ist nicht im Root-Ordner installiert, es ist wie Root/Live
require ist eine dateisystemlokale Prozedur und besteht daher nicht die .htaccess Regeln.
– Niels Keurentjes
16. Oktober 2014 um 21:32 Uhr
Warum habe ich dann diesen Fehler?!
– Samad
16. Oktober 2014 um 21:34 Uhr
Wahrscheinlich ein Problem mit Ihren Dateipfaden.
– Leo Bedrosian
16. Oktober 2014 um 21:34 Uhr
Mein Root-Verzeichnis ist wie folgt /index.php . . . /myfile.php /wp-includes/class-phpass.php und die Funktion require_once( ‘/wp-includes/class-phpass.php’ ); ist was falsch?!
– Samad
16. Oktober 2014 um 21:41 Uhr
Niels Keurentjes
Angenommen, dies ist Ihr wörtlicher Code:
require_once('/wp-includes/class-phpass.php');
Kein Wunder, dass die Datei nicht gefunden werden kann, da require arbeitet auf Dateisystemebene, also brauchen Sie wahrscheinlich so etwas wie /var/www/mysite/wp-includes/class-phpass.php stattdessen.
Sie sollten in der Lage sein, es so zum Laufen zu bringen:
Dadurch wird der aktuelle Stammpfad der Website vor dem Unterpfad eingefügt. $_SERVER['DOCUMENT_ROOT'] ist standardmäßig der einzige Anschein, den PHP von einem ‘Root-Pfad’ hat, es sei denn, Sie lehren es besser.
Ja, ich vermeide WordPress wie die Pest, also kenne ich nicht alle seine benutzerdefinierten Konstanten. Ich habe ausdrücklich gesagt, dass es in der Lage sein sollte, es zum Laufen zu bringen, weil es wahrscheinlich in der Wurzel war. Sie sollten immer noch, auch wenn BASE_PATHist verfügbar, bevorzugen Sie relative Pfade basierend auf __DIR__ stattdessen. Aber ich werde diese Antwort löschen, da Ihre für WP vollständiger ist.
Das ist einer der Gründe, warum ich relative Pfade basierend auf bevorzugen würde __DIR__ – WordPress und seine beschissenen inkonsistenten APIs.
– Niels Keurentjes
16. Oktober 2014 um 21:43 Uhr
Ja, ich muss ein paar Themen ändern, wenn ich morgen zur Arbeit komme, da ich gerade festgestellt habe, dass sie wahrscheinlich alle borken sind 😮
– Jonathan
16. Oktober 2014 um 21:43 Uhr
PHP kennt das Konzept der „Home-Pfade“ nicht. Eine PHP-Datei ist genau das – eine Datei. Es hat kein Konzept eines Heimpfades, es sei denn, es wird ihm beigebracht, genau deshalb hat WP diese Funktion dafür.
– Niels Keurentjes
16. Oktober 2014 um 21:58 Uhr
WordPress 5.x-kompatibel:
Dies kann beispielsweise dazu verwendet werden functions.php zu deinem Thema:
if (!defined("MY_THEME_DIR")) define("MY_THEME_DIR", trailingslashit( get_template_directory() ));
require_once MY_THEME_DIR.'includes/bs4navwalker.php';
Bitte beachten Sie, dass bei Verwendung von untergeordneten Themen der Pfad des übergeordneten Themenordners zurückgegeben wird. get_stylesheet_directory() scheint fehlersicherer zu sein.
– auf keinen Fall
5. Juni 2020 um 17:27 Uhr
Jonathan
Wie im Kommentar erwähnt, ist require eine dateisystemlokale Prozedur – sie verarbeitet die htaccess-Regeln nicht.
Sie versuchen zu
require_once(/wp-includes/class-phpass.php);
Dies sucht im Stammverzeichnis Ihres Computers nach /wp-includes/
Dies würde funktionieren, wenn Ihre WordPress im document_root installiert ist (burt ist nicht der empfohlene Weg):
Wenn Sie Skripte erstellen, die den WordPress-Kern verwenden müssen, aber nicht im Rahmen von WordPress selbst ausgeführt werden, müssen Sie Folgendes tun:
Schwerwiegender Fehler: Aufruf der undefinierten Funktion get_home_path()
– Samad
16. Oktober 2014 um 21:53 Uhr
Ich habe meine Antwort bearbeitet – vielleicht möchten Sie Ihrer Frage weitere Informationen zum Einbinden des WordPress-Kerns in ein externes Skript hinzufügen …
– Jonathan
16. Oktober 2014 um 22:01 Uhr
13651500cookie-checkwie man require_once() für eine PHP-Datei in WordPress zulässtyes
require
ist eine dateisystemlokale Prozedur und besteht daher nicht die.htaccess
Regeln.– Niels Keurentjes
16. Oktober 2014 um 21:32 Uhr
Warum habe ich dann diesen Fehler?!
– Samad
16. Oktober 2014 um 21:34 Uhr
Wahrscheinlich ein Problem mit Ihren Dateipfaden.
– Leo Bedrosian
16. Oktober 2014 um 21:34 Uhr
Mein Root-Verzeichnis ist wie folgt /index.php . . . /myfile.php /wp-includes/class-phpass.php und die Funktion require_once( ‘/wp-includes/class-phpass.php’ ); ist was falsch?!
– Samad
16. Oktober 2014 um 21:41 Uhr