幸いにも私はすでに解決策を見つけているので、この質問は他の人が見つけられるように情報を投稿することを目的としています。
Cloudways サーバー上の crontab で cron ジョブとして Wordpress-CLI コマンドを実行してみました。このコマンドはターミナルでは問題なく直接実行されますが、crontab を使用して起動すると致命的な PHP エラーが発生して失敗します。
Wordpress-CLI の基本的なコマンドは次のとおりです。
wp migeratedb 構成ファイル [id]
crontab が実行されるコンテキストは通常不明であり、$PATH 変数が使用できない可能性があるため、必要な絶対パスを提供するようにコマンドを変更しました。
/usr/local/bin/wp migeratedb 設定ファイル [id] --path=/absolute/path/to/wordpress/core/files
最終的な crontab エントリは次のようになります:
0 5 * * * /usr/local/bin/wp migeratedb 設定ファイル [id] --path=/absolute/path/to/wordpress/core/files
リーリー
いくつかの実験の後、このエラーは、非常に基本的な を除くすべての WP-CLI コマンドで発生することがわかりました。
wp --info
リーリー
次の適応も試しましたが成功しませんでした:
wp-cli.phar
を実行するようにコマンドを変更します。
私は最終的に、このエラーはホスティングプロバイダー (この場合は Cloudways) が
wp-config.php
ファイルで WordPress 設定をセットアップする方法に関係していることがわかりました。ソルト認証キーとシークレット認証キーは、エラー メッセージ内で参照される
wp-salt.php
。它可以通过以下方式直接在配置文件中引用:require('wp-salt.php')
別のファイルに保存されます。 これは WordPress コアの一部ではなく、crontab は別の環境で実行されているため、ファイルが配置されている正しいディレクトリを判断できず、require()
は致命的なエラーで失敗します。これを修正するには、ファイルが常に設定ファイルと同じディレクトリから参照されるように、
wp-config.php
中的行更改为require(__DIR__.'/wp-salt.php');
の行をrequire(__DIR__.'/wp-salt.php');
に変更します。もう 1 つのオプションは、WordPress コアと同様に、行を完全に削除し、
wp-salt.php
ファイルのコンテンツに置き換えることです。