cronでwp-cliが動かない

この記事は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を叩いてみたところ、
情報が正しく出力されていないようだったので、
そのあたりが原因かもしれません。

参考


投稿日

カテゴリー:

投稿者:

タグ: