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

Wapuu

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

目次

Wockerでコマンドを使う

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

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

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]
<?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] );
}
}
[/php]

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

〔参考サイト〕

Wapuu

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次