2010年9月6日月曜日

DBの修復

データベースが壊れる事があり、修復を行いました。

私が使用しているレンタルサーバーでは、DBの管理にphpMyAdminを使っています。

その関係から、修復に使用できないコマンドもありましたが、以下のコマンドで修復する事ができました。

repair table [table_name]

18万行のテーブルでしたが、20秒ほど待っていると修復できました。

2009年11月19日木曜日

WindowsXPの環境構築トラブル

WindowsXPで環境構築をする機会がありました。
Apacheのインストールは難なくできましたが、PHPインストール後にApacheが起動不可になってしまいました。

環境
Apache2.0.63と2.2.14
PHP5.2.11

ApacheとPHPはどちらもインストーラー(msiパッケージ)を使いました。

Apacheをインストールし、localhostにアクセス確認しましたが、問題なく表示できました。
その後、PHPをインストールしてApacheを再起動すると「The requested operation has failed」でApacheが起動できなくなりました。

Apacheのバージョンを変えても同症状でApache起動不可。
ApacheやPHPのインストール先をDドライブの直下に変更しても同症状。

最終的にはこれでした。
httpd.confに追記された、「PHPIniDir "d:/php/"」の「/(スラッシュ)」ではなく、「\(円マーク)」でした。
「PHPIniDir "d:\php\"」に書き換え、phpの動作が確認できました。

2008年5月11日日曜日

MySQLのバージョンを変更した際のトラブル

レンタルサーバーの環境に自宅合わせようとしたのですが、これが一筋縄でいかなかった。
MySQLのバージョンを上げるだけだったのだが・・・。

環境
OS:Windows Vista
Apache:2.0.63
php:5.2.5
MySQL:5.0.45から5.1.20

MySQL5.0.45をアンインストールし、MySQL5.1.20をインストールはすんなりと終わった。
しかし、phpMyAdminを開くと、下記の警告が出てくる。
「お使いの PHP MySQL ライブラリのバージョン 5.0.45 が MySQL サーバのバージョン 5.1.20 と異なります。これは予期しない不具合を起こす可能性があります。」

・・・。これは、そのままでも使えそうだけど、直しておいた方が後々は困らないかなと思い、直す方向でいろいろ試すことにした。

とりあえず、以下のようなものを試したが現象回避せず。
・PHPの再インストール
・プログラムのアンインストールからPHPの修復
・MySQLの再インストール
・MySQLの前バージョンのレジストリ(適当に)を削除
・他のMySQL5.0系をインストールし、アンインストール

ネットで対処方法を検索するが、回避方法が探せない。

しばらく瞑想し、無理かなーこれはPCリカバリしてから入れなおすしかないかなー・・・どうしよう・・・面倒だ・・・どうしよう・・・。
と思っていたが、あきらめずにphpのインストールフォルダを一通り理解しようと開いて眺めていると、MySQL関連のファイル「php_mysql.dll」、「libmysql.dll」が2つあった。
見つかった2つのファイルの古いバージョンがどこかに残っているかもしれないと想定し、ファイル検索をすると「libmysql.dll」がMySQLのインストールフォルダにあった。
2つのファイルを見比べるとファイルサイズや作成日が異なるので、明らかに違うファイルだ。

PHPのインストールフォルダにあるファイルをリネーム(バックアップ)し、MySQLにある「libmySQL.dll」をコピーしたら現象回避できた!(Apache再起動後)

思い起こしてみると、昔PHPやMySQLをインストールしたときに、このファイルをどこかにコピーした記憶がおぼろげにある。
最近はインストールする際にそのあたりの作業をしなくて手軽になった半面、バージョンアップでこのような状態になったかもしれない。

そのあたりを考慮しても今回の対処方法は、多分大丈夫だと思う(特に調べてない)が、もし同じようなトラブルに見舞われた際に参考になればと思います。

2008年5月10日土曜日

apacheでpathinfoを使う際の設定

apache2.0.63にて、ローカルのテスト環境を作った際にpathinfoが使えなくて困った困った。
どうやら初期値でMultiViewsが無効になった為に初期設定では使えなくなったようです。

httpd.confの337行目に「MultiViews」を追記して使えるようになりました。

httpd.confの337行目
Options Indexes FollowSymLinks MultiViews

apacheの1.3系では元々上記の設定になっているので、初期値で動作します。

Windows Vistaでapacheの1.3系が使えなかったので、apache2.0.63にすると上記設定が足りないので開けないページがいくつか出てしまいました。
pathinfoを使っている場合はapache2.0系にすると使えなくなる可能性があるので気をつけてください。

2008年5月5日月曜日

サイトマップの生成処理

sitemaps.orgを参考にサイトマップファイル生成スクリプトを作ってみました。
ファイルサイズを抑えるためにgzip形式にしてみました。
ファイル関連の関数はあまり使わないので、ちょっと手こずりました。

ファイル(sitemap.xml.gz)は事前にアップロードし、パーミッションは707で指定しました。

$urlやdateを任意に変更しループ処理すれば、URL数の多いサイトでも簡単にサイトマップの生成ができます。

注意点
1ファイルに指定できるURLは50000までです。
50000を超える場合には、ファイルを分け、インデックスファイルを作成してください。


<?php
$xml = '<?xml version="1.0" encoding="UTF-8"?>'."\n";
$xml .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'."\n";
$xml .= ' <loc>'.$url.'</loc>'."\n";
$xml .= ' <lastmod>'.date("Y-m-d").'</lastmod>'."\n";
$xml .= ' </url>'."\n";
$xml .= '</urlset>'."\n";

//gzipで圧縮
$zp = gzopen("sitemap.xml.gz", "w9");
gzwrite($zp,$xml);
gzclose($zp);
?>

楽天ウェブサービスで使用するアフィリエイトIDのチェック

楽天ウェブサービスを使用しているサイトにて、アフィリエイトIDの入力をチェックする正規表現を作成しました。
ユーザーがアフィリエイトIDを設定する場合に利用すると、誤設定の可能性が下がります。
※アフィリエイトIDはβ版(2008/5/5)の為表記が変わる可能性があります。
正規表現ビギナーの私には、たったこれだけのチェックを作るのにちょっと時間がかかってしまいました。
Googleで検索してもサンプルがなかったので参考までに紹介します。

【function】
<?php
function affiliateId_chk($affiliateId){
  if(preg_match('/^[a-f0-9]{8}\.[a-f0-9]{8}\.[a-f0-9]{8}\.[a-f0-9]{8}$/',$affiliateId)){
    return TRUE;
  }else{
    return FALSE;
  }
}
?>


【使用例】
<?php
function affiliateId_chk($affiliateId){
  if(preg_match('/^[a-f0-9]{8}\.[a-f0-9]{8}\.[a-f0-9]{8}\.[a-f0-9]{8}$/',$affiliateId)){
    return TRUE;
  }else{
    return FALSE;
  }
}

$affiliateId = '07479c44.1be0a805.07479c45.6cd64dbc';
$result = affiliateId_chk($affiliateId);
  if($result){
    echo $affiliateId.'は正しいアフィリエイトIDです';
  }else{
    echo $affiliateId.'は誤っている可能性があります';
  }
//「07479c44.1be0a805.07479c45.6cd64dbcは正しいアフィリエイトIDです」が出力されます。

$affiliateId = 'abc@abc.com';
$result = affiliateId_chk($affiliateId);
  if($result){
    echo $affiliateId.'は正しいアフィリエイトIDです';
  }else{
    echo $affiliateId.'は誤っている可能性があります';
  }
//「abc@abc.comは誤っている可能性があります」が出力されます。

?>

2008年5月1日木曜日

Google、Yahoo、LiveSearch(MSN)のSEO対策

Google、Yahoo、LiveSearch(MSN)のSEO対策の一環として、サイトマップを送信する方法があります。
作成したサイトマップを各検索エンジンが用意しているウェブマスター専用サイトにアクセスし、サイトマップファイルを通知します。
Googleは日本語環境も提供しているので、まずはGoogleから設定する事をお勧めします。
YahooやLiveSearchは英語環境しかありませんが、Googleとやることは似ているので感覚的に設定できます。

Google
ウェブマスターツール

Yahoo
Site Explorer(英語)

LiveSearch(MSN)
Webmaster Tools(英語)

LiveSearchは今までなかったと思いますが、検索結果に見慣れないリンクがあったので確認するとBeta版として公開されていました。(2008/5/1)