この記事はwp-cliをつかったスクリプトを
cronで動かそうとしたら無理だったという内容になってます。
いつか答え合わせしたい…
解決できなかったエラー…
Undefined index: argv in phar:///<PATH>/bin/wp/php/WP_CLI/Runner.php on line ... implode(): Invalid arguments passed in phar:///<PATH>/bin/wp/php/WP_CLI/Runner.php on line ...
phpからwp-cliを叩いて、wordpressの記事を作成するスクリプトを作成しました。
ローカルとリモートで動作確認して、いざcronで動かそうとしたところ、
うんともすんともいわない…
確認事項
PHP CLIで動いているか
wp-cliはcgi版だと動かないらしいです。
cli版の絶対パスを指定して動かそうとしましたがダメでした。
CLI版かどうかは、vオプションを指定した時に
PHP 5.6.30 (cli)のように、バージョンの後ろに
(cli)がつくかどうかで判別できるようです。
register_argc_argvが有効か
コマンドラインでプログラムを動かす場合、
register_argc_argvを有効にしておいた方がいいらしい。
詳しい理由はよくわからない…
sshで接続できるレンタルサーバだったので、
register_argc_argvをOnにしたphp.iniファイルを読み込んで対応しました。
最終的なコマンド
/usr/local/bin/php -c /<PATH>/php.ini /<PATH>/script.php # script.php内では、wpコマンドの絶対パスが指定されています # e.g. /<PATH>/wp --info
ちなみに、/usr/local/bin/php はPHP CLI版のパスです。
cオプションでregister_argc_argvを有効にしているiniファイルを読み込んでいます。
ここから詰み状態です。
ただ、cronからwp-cli –infoを叩いてみたところ、
情報が正しく出力されていないようだったので、
そのあたりが原因かもしれません。