Schwerwiegender PHP-Fehler: Die erforderliche Datei „wp-salt.php' kann nicht geöffnet werden, wenn der WP-CLI-Befehl als Cron-Job in Crontab ausgeführt wird
P粉253518620
P粉253518620 2024-03-28 09:25:13
0
1
368

Diese Frage soll ein informativer Beitrag für andere sein, denn zum Glück habe ich die Lösung bereits gefunden.

Ich habe versucht, den Wordpress-CLI-Befehl als Cronjob in crontab auf dem Cloudways-Server auszuführen. Der Befehl wird ohne Probleme direkt im Terminal ausgeführt, schlägt jedoch mit einem schwerwiegenden PHP-Fehler fehl, wenn er mit crontab gestartet wird.

Die grundlegenden Befehle der Wordpress-CLI lauten wie folgt:

wp migeratedb 配置文件 [id]

Da der Kontext, in dem crontab ausgeführt wird, normalerweise unbekannt ist und die Variable $PATH möglicherweise nicht verfügbar ist, habe ich den Befehl geändert, um den erforderlichen absoluten Pfad bereitzustellen:

/usr/local/bin/wp migeratedb 配置文件 [id] --path=/absolute/path/to/wordpress/core/files

Ähnlicherweise läuft dieser geänderte Befehl auch einwandfrei und ohne Probleme, wenn er vom Terminal aus gestartet wird.

Der letzte Crontab-Eintrag sieht so aus:

0 5 * * * /usr/local/bin/wp migeratedb 配置文件 [id] --path=/absolute/path/to/wordpress/core/files

Beim Ausführen über den Scheduler wird der folgende Fehler angezeigt:

PHP Fatal error:  require(): Failed opening required 'wp-salt.php' (include_path='.:/usr/share/php') in phar:///usr/local/bin/wp/vendor/wp-cli/config-command/src/Config_Command.php(444) : eval()'d code on line 34

Nach einigem Experimentieren wurde mir klar, dass dieser Fehler bei allen WP-CLI-Befehlen auftritt, mit Ausnahme der ganz einfachen

wp --info

, was die folgende Ausgabe erzeugt:

OS: Linux 4.19.0-21-amd64 #1 SMP Debian 4.19.249-2 (2022-06-30) x86_64
Shell:  /bin/sh
PHP binary: /usr/bin/php7.4
PHP version:    7.4.33
php.ini used:   /etc/php/7.4/cli/php.ini
MySQL binary:   /usr/bin/mysql
MySQL version:  mysql  Ver 15.1 Distrib 10.4.20-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
SQL modes:  
WP-CLI root dir:    phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir:  phar://wp-cli.phar/vendor
WP_CLI phar path:   [absolute/path/to/user/home/directory]
WP-CLI packages dir:    
WP-CLI cache dir:   [absolute/path/to/user/home/directory]/.wp-cli/cache
WP-CLI global config:   
WP-CLI project config:  
WP-CLI version: 2.7.1

Außerdem habe ich folgende Anpassungen erfolglos ausprobiert:

  • Laden Sie die neue wp-cli.phar herunter und verwenden Sie sie mit dem Befehl.

  • Alle Berechtigungen der verwendeten Ordner anzeigen und ändern

  • Versuchen Sie, Cronjob als anderer Benutzer auszuführen

  • Verwenden Sie

    /usr/bin/php 更改命令来运行 wp-cli.phar

P粉253518620
P粉253518620

Antworte allen(1)
P粉790187507

我终于发现这个错误与托管提供商(在本例中为 Cloudways)在 wp-config.php 文件中设置 Wordpress 配置的方式有关。

盐和秘密授权密钥存储在一个单独的文件中,即错误消息中引用的wp-salt.php。它可以通过以下方式直接在配置文件中引用:require('wp-salt.php')。 由于这不是 WordPress 核心的一部分,并且 crontab 在不同的环境中运行,因此无法确定文件所在的正确目录,并且 require() 失败并出现致命错误。

要修复此问题,请将 wp-config.php 中的行更改为 require(__DIR__.'/wp-salt.php');,以便文件始终从与配置文件相同的目录中引用。

另一种选择是完全删除该行并将其替换为 wp-salt.php 文件中的内容,就像 Wordpress 核心所做的那样。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!