Latest Publications

phpMyAdminでアップロードできない大きなSQLファイルをアップするBigDump

サーバー移転のためデータをごっそりと移動させようとして失敗。データの出力はphpMyAdminのエクスポートでできるが、インポートをしようとすると大きすぎるとエラーが出てできない。

設定ファイルをいじれる場合はconfig.inc.phpの中の$cfg[‘UploadDir’]=”;を$cfg[‘UploadDir’]=’./upload’;などとして、サーバーにディレクトリを作りSQLファイルをアップロードすればphpMyAdminのインポート画面で選択できるようになるのでインポート可能。

ただ、レンタルサーバーで設定がいじれないケースだったので調べてみた。

BigDumpというスクリプトを発見。結果これでできた。

ダウンロードするとPHPファイルがひとつ入っているのでそれを開き、DBの設定だけしてインポート先のサーバーにアップロード。同じディレクトリに大きすぎて困ってたSQLファイルをアップロードし、ブラウザからアクセスすると実行できる。

コツとしてphpMyAdminでのエクスポート時に設定をデフォルトから変える必要があった。エクスポートの画面で「生成するクエリの最大長」が50000になっているのを100にしてSQLファイルを作る。

参考にさせてもらったページ
WikiCookRecipe日記: MySQLインポートファイルがでかすぎる時には BigDump を使ってみよう!

WordPressがタイムアウトで表示されない

運営していたWordpressサイトのひとつが、アクセスしてもタイムアウトとなり何も表示されない現象となった。

同じサーバーの他Wordpressサイトは表示されるのでサーバーが原因でもなく、テキストファイルなどを直接URL入力されると表示されるのでDNSなどが原因でもない。

しばらくアップグレードも変更もしていないので原因不明だったが、phpMyAdminで「テーブルの最適化」をしたら復旧。なぜこうなったのかは不明。

テストツールのseleniumを使ってみた

広島システム開発者勉強会で、テストツールのseleniumを使ったのでPHPの部分をメモ。

機能として、1つはFirefoxのアドオンとして、操作した動きを記録してボタンひとつでそれを再生できる。selenium downloadのIDEをクリックしてアドオンを入れるだけ。後はツールから開けば専用ウィンドウが出る。

もう一つは操作の動きをプログラミングできる。大量の条件をループさせる時などに便利。javaのサーバープログラムを動かした上で、PHP(など)で書いたテスト動作のスクリプトをコマンドプロンプトから実行する。

下準備。

PEARを最新にする。
pear upgrade PEAR

PEARのPHPUnitを入れる
pear channel-discover pear.phpunit.de
pear install phpunit/PHPUnit

先ほどアドオンを入れたのと同じselenium downloadから、Selenium RCをダウンロード。

解凍し、中に入っている
selenium-server-x.x.x/selenium-server.jar
をどっかわかりやすいトコに置く。そのままでも良い。

こっから動作。まずseleniumのサーバーを起動。コマンドプロンプトを開き、上記ファイルを実行。
java -jar selenium-server.jar
例)java -jar C:\htdocs\selenium-server-x.x.x.\selenium-server.jar

PHPでのテストコードのサンプルを作るには、FirefoxのツールからseleniumのIDEを起動して、何か適当に動作を覚えさせた後記録を停止し、
「オプション」「フォーマット」「PHP」にするとPHPコードができる。これが先ほど記録した動作をPHPで表したもの。これをどこかに保存。test.phpとか。

phpunitが動く場所(c:\xampp\php\ とか)で先ほど保存したテストコードを実行。
例)phpunit c:\test.php

これでコードで指定したブラウザが立ち上がり、テストが実行される。後はテストコードを好きなように書く。

(オマケ)下記のエラーが出て、原因がわからなくて調べるのに苦労したけどテストコードのパス間違ってただけだった。
Argument #1 of PHPUnit_Utill_Fileloader:checkAndLoad() is no existing file

phpMyAdminでtextの中身を表示

phpMyAdminのたぶん新しいバージョンだと思うけど、データの中身を見た時にtextだとBlobと表示されて中身が見えない。

phpMyAdminのconfig.inc.phpに

$cfg[‘ShowBlob’] = true;

を追記すれば中身を表示するようになった。

セッションエラー

coreserverでcakePHPを動かしたときに、セッションを使うと

Warning (2): session_start() [function.session-start]: open(/tmp/sess_sci1m2l4kennnd48kl12d89s13, O_RDWR) failed: Permission denied

とエラーが出た。

権限のない場所に一時ファイルを作ろうとしているのが原因みたい。ftpでログインしたルートにtmpディレクトリを作って権限を付けて、app/webroot/php.iniを作って

session.save_path=”/virtual/アカウント名/tmp”

と書いて設置。これで解決。

Admin SSLのログインでループ

WordPressをSSL化するプラグイン、Admin SSLで、ログインすると無限ループになってしまう問題が発生。色々探してみたが原因がわからず。

ひとまず、

plugins/admin-ssl-secure-admin/includes/https.php

//$tmp1[] = “wp-login.php”;

をコメントアウトすることで回避。ちゃんとした原因探しは後で。

ちなみにAdmin SSLに関してプラグインを外したりと色々いじってると、途中管理画面どこを表示しても無限ループになることがある。その場合は、ブラウザの設定で対象URLのクッキーを削除すれば表示可。

PHP5.3でcakePHPを使ったときの警告

PCに入れていたxamppが壊れたので最新版を取得して入れなおし。PHP5.3になったことで各システムから非推奨の記述に対して警告が多発。

WordPressは最新版にしたことでエラーが消えた。cakePHPもそうかもしれないが、面倒なので警告が出ないように処理。

cake/lib/configure.php

if (isset($config[‘debug’])) {
if ($_this->debug) {
error_reporting(E_ALL);
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE);//ここを追記

cake/lib/debugger.php

/*ここをコメントアウト
case E_NOTICE:
case E_USER_NOTICE:
$error = ‘Notice’;
$level = LOG_NOTICE;
break;*/

ワードプレスアップグレードの不具合

coreserferに入れているワードプレスを2.7系から2.8.2にアップグレードしたところ、管理画面のcssが効かなくなってレイアウトが崩れた。

調べたところ、

wp-config.phpの上部に下記のコードを入れることで解決。

define( ‘CONCATENATE_SCRIPTS’, false );

古いネットワークキャッシュが原因とかで、このコードもしばらくしたら消してもいいんだとか。

MySQLの濁点

MySQLでソートをした時におかしな動きをするものを発見。

濁点のついているものとついていないものがソートの中で同じように扱われてる。不思議に思って調べたらそういう仕様なんだとか。なんだそりゃ。解決方法はわからず力技で対処。

mod_rewriteのクエリー

mod_rewriteを使っているサイトでクエリーを受け取ろうと思った時に、複雑な条件がいるのかと色々調べてたらかなりシンプルにできることが判明。最期に[QSA]を付ければいいだけだった。

例:RewriteRule ^(.*)/$ index.php?$1 [QSA]