1. TOP
  2. Webサービス
  3. WordPress 開発環境がWocker。そのときのPHPファイルの実行について

WordPress 開発環境がWocker。そのときのPHPファイルの実行について

|

Wapuu

WordPressがどういう仕組みで動いているのか知りたくて、詳解 WordPressを読んでいます。その中で記載されている、phpコマンドの使い方で分からないところがあり困っています。開発環境はWocker(バージョン0.7.0)を使用しています。

Wockerでコマンドを使う

具体的には、はew.2.4.show_tables.phpという、WordPressがインストールされたディレクトリ直下のファイルの実行です(コードはP.47から引用)

<?php
require_once('wp-load.php');
$ret = $wpdb->get_results('SHOW TABLES', ARRAY_N);
foreach($ret as $row) {
  echo $row[0] . "\n";
}

WordPress以外のPHP開発環境に関しては、実サーバーかvagrantによるローカル開発環境(いずれもCentOS)を使用しています。本書に書かれているとおり、次のコマンドを実行すれば良いのでしょう

$php ew.2.4.show_tables.php

このコマンドを実行すると、WordPressをインストールした際に生成されるテーブルの名前が表示されます。

wp_commentmeta
wp_comments
wp_links
...

ですが、WordPressの開発環境はWockerを使っているので、このコマンドは使えません。おそらくですが、WordPress向けコマンドラインツール「WP-CLI」をを使うのでしょう。

wp eval-fileではエラー

WP-CLIの内容について調べていると、SONICMOOV LABさんがざっくりまとめてくれていました。

eval-file PHPファイルを読み込んで実行する(WordPressロード後)

今回、自分が実行したいコードはこれでしょう(おそらく)。「WordPressロード後」というのが、ちょっと気になりますが、実行してみましょう、えい!

$ wocker wp eval-file ew.2.4.show_tables.php

wocker_wpcli

残念ながらエラーが出ますね〜(泣)。なのでload.phpを抜粋。

<?php
/**
 * These functions are needed to load WordPress.
 *
 * @internal This file must be parsable by PHP4.
 *
 * @package WordPress
 */

/**
 * Turn register globals off.
 *
 * @since 2.1.0
 * @access private
 */
function wp_unregister_GLOBALS() {
	if ( !ini_get( 'register_globals' ) )
		return;

	if ( isset( $_REQUEST['GLOBALS'] ) )
		die( 'GLOBALS overwrite attempt detected' );

	// Variables that shouldn't be unset
	$no_unset = array( 'GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES', 'table_prefix' );

	$input = array_merge( $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES, isset( $_SESSION ) && is_array( $_SESSION ) ? $_SESSION : array() );
	foreach ( $input as $k => $v )
		if ( !in_array( $k, $no_unset ) && isset( $GLOBALS[$k] ) ) {
			unset( $GLOBALS[$k] );
		}
}

肝心なのは、”!ini_get( ‘register_globals’ )”なんでしょう。ですが、PHPのマニュアルを見てもこれ以上何をすればいいのか、分からないので今回はここらで作業を止めておきます。

〔参考サイト〕