‘mysql’ タグのついている投稿

Page 1 of 3123»

PerlとPHPの対応表

2008 年 10 月 29 日 水曜日

現在、僕がメインで使おうとしているのはPHPですが、たま~にPerlで書かれた古いプログラムをメンテナンスしなきゃ行けないときもあったりするわけです。そんなとき、自分の知っているPHPのコードがPerlで何に当たるのかが分かれば作業も早いですよね。

PerlとPHPの対応表。
Perl to Php Translation
より一例を紹介。

— Perl arrays —

@a = ();

@a = ( ‘xx’, 11, 33.5, );

@a = 12..33;

$a[2] = ’something’;

$len = scalar(@a);

# or

$len = @a;

@a3 = (’xx’, @a1, @a2);

($x, $y) = @a;

$a[@a] = ‘new’; # push

push

pop

shift

unshift

splice

foreach $i (@a) { .. }

— Php arrays —

$a = array();

$a = array( ‘xx’, 11, 33.5, );

$a = range(12,33);

$a[2] = ’something’;

$len = count($a);

$a3 = array_merge(’xx’, $a1, $a2);

list($x, $y) = $a;

$a[] = ‘new’; # push

array_push

array_pop

array_shift

array_unshift

array_splice

foreach ($a as $i) { .. }

— Perl MySQL database access —

use DBI;

$dbh = DBI->connect(

‘DBI:mysql:test:localhost’,

$usr,$pwd

);

$dbh->do( $sql_op )

$query = $dbh->prepare( $sql_op );

$query->execute();

while(

@record = $query->fetchrow() )

{ .. }
$dbh->quote($val)

— Php MySQL database access —

$dbh = mysql_connect(

‘localhost’, $usr, $pwd

);

mysql_query(’USE test’)

mysql_query( $sql_op );

$results = mysql_query( $sql_op );
while($record =

mysql_fetch_row($results))

{ .. }
“‘” . addslashes($val) . “‘”

複数サイトでphpMyAdminを共有する

2008 年 10 月 27 日 月曜日

CMSを使って、同一サーバーで複数のサイトを管理していたりするときに、phpMyAdminをサイトの数だけそれぞれのドキュメントルートに突っ込んだりしていませんか?

どうせ覗くのは同じMySQLサーバーなのに、面倒だしサーバー領域のムダですよね。
実はシンボリックリンクで共有させることが出来ます。

phpMyAdminを設置したいディレクトリに行って、phpMyAdminが実際にインストールされている階層を指定するだけ。

↓例:/home/dacelo.info/DocumentRoot/で実際に使っているPhpMyAdminを、/home/hogehoge/htmlで使う。

[root@dacelo1]# cd /home/hogehoge/html
[root@dacelo1 html]# ln -s /home/dacelo.info/DocumentRoot/phpMyAdmin/ phpMyAdmin

これで、そこにphpMyAdminをインストールしたのと同じように使えます。(権限を設定する必要はあります)

phpMyAdminのインストール&エラーメッセージ集

2008 年 10 月 22 日 水曜日

phpMyAdminのインストール手順&エラーメッセージ集

MySQLをコマンドラインで操作するのは、意外と面倒です。まあ最初は概念を体感するためにコマンドで勉強した方がいいんですけど、手軽に操作したい場合はやはりphpMyAdminが便利ですね。

と言うわけで設置手順とエラーメッセージへの対応方法を簡単にまとめます。

phpMyAdminのインストール

  1. ダウンロード
    こちらから好きなバージョンをダウンロード。3.0移行は、phpが5.2移行でないと使えません。
  2. インストール
    ターミナル操作の場合、unzipやtarで解凍、Windows+FTPの場合は解凍してできたフォルダを全部任意の場所にアップロード。
  3. コンフィグファイルの作成
    セットアップスクリプトは意外と不親切で分かりづらいので、手動で作成します。
    config.inc.sample.phpをconfig.inc.phpの名前でコピーします。
    デフォルトでは
    • サーバー:localserver
    • 認証タイプ:cookie

    になっているので、特に変更しなくても大丈夫だと思います。
    一点だけ、blowfish_secretに暗号化用の文字を入れないと動きません。

エラーメッセージ

PHP を 5.2 以降にアップグレードしてください

phpMyAdmin3.0以降は、PHPが5.2以降になっている必要があります。
PHPのアップグレードをしたくない場合は、phpMyAdmin 2.11.9.2など2系の安定版を使用しましょう。

mcrypt 拡張をロードできません。PHP の設定を確認してください


# yum -y install php-mcrypt
でphp-mcryptをインストールします。

PHP の mbstring 拡張が見つかりませんでした。マルチバイト文字セットを使用しているようですが、mbstring拡張がないとphpMyAdmin は文字列を正しく分割できないため予期しない結果になることがあります

# yum -y install php-mbstring

でphp-mbstringをインストールします。日本語のようなマルチバイト文字を処理するために必要です。

設定ファイルが秘密のパスフレーズ(blowfish_secret)を必要とするようになりました


インストール手順でも説明しましたが、blowfish_secretが空のままだとこのエラーが出ます。
config.inc.phpを開いて、適当な文字列を入力して保存します。この文字列は、暗号化の際に使われるコードであってパスワードではないので、特に今後入力を求められる機会はありませんから、適当でOKです。

LinuxでDivX等の動画を見る(Fedora Core)

2008 年 10 月 19 日 日曜日

DVD直リッピングのISOファイルの直接再生から、Youtubeから落としたFLV形式の動画まで、幅広いフォーマットに対応していることで人気のVLC media player。

実はこれにFedora Core版というのがありまして、これをインストールすればFedoraCoreのリナックス環境でDivXを含めた色々な動画が再生できるようになります。(VLC media player for Fedora

インストールに使うコマンドは以下のとおり。

$> su -
#> rpm -ivh http://rpm.livna.org/livna-release-6.rpm
#> yum install vlc
#> yum install python-vlc mozilla-vlc (optionnal)

ところでFedora Coreってもう9まで出てるんですねえ。

シンボリックリンクが削除できない!?

2008 年 10 月 14 日 火曜日

別サイトに設置したphpMyAdminを流用しようとして作ったシンボリックリンクが削除できない。

[root@dacelo DocumentRoot]# rm phpMyAdmin/
rm: cannot remove directory `phpMyAdmin/’: ディレクトリです
[root@adcelo DocumentRoot]# rm -f phpMyAdmin/
rm: cannot remove `phpMyAdmin/’: ディレクトリではありません
[root@dacelo DocumentRoot]# rm -f phpMyAdmin

「シンボリックリンクはrmで削除できる」はずなのに、ディレクトリ扱いになっているのかと思えばそうでもなく、どうやっても削除できない。

と思ってよく見ると、
phpMyAdmin/
となっている。/が付くのはディレクトリ。シンボリックリンクのリンク先がディレクトリなせいで、Tab補完すると自動的に/まで入ってしまうんだけど、シンボリックリンク自体はディレクトリではない。
つまり正解は

rm シンボリックリンク名/

ではなく

rm シンボリックリンク名

でした。

[root@dacelo DocumentRoot]# rm phpMyAdmin
rm: remove シンボリックリンク `phpMyAdmin’?
YES!

FTPでのサーバー間転送

2008 年 10 月 9 日 木曜日

サーバ間の転送には、通常SFTP接続で次のようなコマンドを実行します。

scp -r ./転送したいディレクトリ/ ユーザー名@転送先アドレス:/転送先ディレクトリ

scp -r ./www/ user@210.111.11.11:/home/user/html/

しかし、SFTPが入っていない古い共有サーバーなどでは、未だにFTPで転送する必要があります。FTPというと、『FFFTP』などのWindows用クライアントソフトで接続するイメージがどうしても強いのですが、ちゃんとシェルで作業できます。

まず、転送先サーバにログインします。
(転送、というよりFTP接続してダウンロードするので。)

ログインしたらFTPコマンドで対象サーバ(oldserver.co.jp)にログイン。

ftp oldserver.co.jp

接続に成功すると、ユーザー名、パスワードの順に対話型で入力します。

Name (newserver.co.jp:currentuser): ftpuser
331 Password required for ftpuser.
Password:
230 User ftpuser logged in.

CD、lsなどのコマンドはTelnetやSFTPと共通なので、目的のディレクトリに移動したら、getコマンドでファイルを転送(最初のログインサーバにダウンロード)します。

get 対象ファイル 保存先

get ./images/ ./imagesbackup/

保存先を省略すると、FTP接続するときにいたディレクトリに保存されます。ファイル名が複数あるときはgetではなくmgetを使います。

逆にログイン先のサーバーからアップロードするときはput、mputを使います。

これでファイルの転送はOKなんですが、ディレクトリごとのコピーはできません…。
ツールを使うしかありません。

WordPressのサーバー&ドメイン移転

2008 年 10 月 7 日 火曜日

とうとう独自ドメイン&別サーバーで運用することにしました!
というわけで、何らかの事情でWordPressのホスティングサーバーを変えたいときの為の覚え書き。ちょっと調べた限りでは、サーバー移転の場合の方法はあっても「サーバーとドメイン両方変更」の場合の情報がなかったので。(あまりないケースだとは思いますが。)

WordPressにはログのインポート/エクスポート機能がありますが、それだと記事のパーマリンクやタグ、プラグインの情報などが移動できないので、データベースごとごっそりと移動させます。

サーバーのみ変える場合の手順は以下の通り。(phpMyAdminを使っています。)

  1. 旧サーバーでデータベースを全て選択してファイルでエクスポート
  2. 新サーバーにWordPressをインストールして動作確認
  3. 新サーバーのデータベースを空にする
  4. 1のSQLデータをインポート
  5. プラグイン、テーマ、アップロードデータの移行

ドメインごと変える場合はちょっと手順が増えます。

  1. 旧サーバーでデータベースをwp-optionsテーブル以外全て選択してファイルでエクスポート
  2. 1のファイルを一括置換で旧ドメインから新ドメインに書き換える
  3. /home/***/htmlなどサーバー内のパスも書き換える
  4. 新サーバーにWordPressをインストールして動作確認
  5. 新サーバーのデータベースをwp-optionsのみ残して空にする
  6. 1のSQLデータをインポート
  7. プラグイン、テーマ、アップロードデータの移行

2のドメインおよびパスの書き換えを忘れると、投稿に使った画像が表示されませんし、うまく動作しません。
エクスポートの際、「wp_options」を除外すること、「長いInsert文」のチェックを外すこと、「ファイルに保存する」にチェックを入れることを忘れないでください。
wp_optionsを含めるとどうもうまくいかないようなので、ここだけエクスポート/インポートの手順から外します。(ドメインを書き換えてもうまくいかなかった)
なので移行後にブログの説明やパーマリンク設定などを手動で設定し直す必要があります。

あとはテーマやアップロードした画像などのデータの移行ですね。
SSHでシェルコマンドが使えるサーバーの場合は、SCPでそのまま受け渡しすると便利です。

[hoge@server]$ scp -r ./plugins/ hoge@new.server.info:/home/hoge/blog/wp-content/
[hoge@server]$ scp -r ./themes/ hoge@new.server.info:/home/hoge/blog/wp-content/
[hoge@server]$ scp -r ./uploads/ hoge@new.server.info:/home/hoge/blog/wp-content/

wp-contentごと移しちゃってもいいかも知れません。

シェルが使えない場合は、FTPクライアントで頑張ってダウンロード→アップロードしてください。
以上です!

WorPressにphpMyAdminを組み込むプラグイン

2008 年 10 月 6 日 月曜日

WordPressの管理画面から、MySQLデータベースに直結できるプラグインを発見しました。

| WP-phpMyAdmin 2.10.3 | WordPress Designpraxis

おなじみphpMyAdminの管理画面が、WordPressの「管理」メニューの中に出現します。キャプチャ画面は諸事情によりちょっと小さいですが、WordPress管理画面のヘッダーが残っているのが見えますか?

このブログをインストールしたサーバには、元々phpMyAdminもインストールされてたのですが、中身を見る限り、入っていないサーバにもphpMyAdminを込みで丸ごと組み込んでくれるプラグインのようです。これは便利ですね。

お客さんのブログには入れられませんけど…。

Windowsでファイル名一括変更2(削除、追加)

2008 年 10 月 1 日 水曜日

前回、コマンドプロンプトでファイル名を一括変更するTipsを紹介した。
システム修行ブログ» ブログアーカイブ » Windowsでファイル名一括変更

これは、%iを変数に取り、forでループ処理して、ファイルの前に文字を追加するコマンドだった。

逆に、文字を一括して削除したいとき、もしくはファイルの「後に」文字を追加したい場合がある。そんなとき、ファイル名の文字数が同じだったら、こういう方法もある。


001.jpg
002.jpg
003.jpg

「“image”を後ろに付けたい場合」

rename ???.jpg ???image.jpg

?は、文字一つ分を表すリテラル。これでファイル名が次のようになる。

001image.jpg
002image.jpg
003image.jpg

「やっぱり“image”を後ろに削除したい場合」

rename ???image.jpg ???.jpg

ひっくり返して実行すればOK。

ファイルの前に付けたい場合に、単純に image???.jpg としてもうまくいかない。
この理由はしばらく不明だったが、いくつか検証してみて分かった。

例えば、
FL010001.jpg
というようなファイル名で

rename ????????.jpg 08-09-????????.jpg

とした場合、08-09-FL010001.jpgではなく、08-09-01.jpgとなってしまう。
これは、この文字列挿入が「上書き追加」(viで言うとa)なため、ファイル名の最後尾なら「追加」になるが、ファイル名の最初だと上書きになってしまう。そのためファイル名の長さによっては、保存できずにエラーになる。

Windowsでファイル名一括変更

2008 年 10 月 1 日 水曜日

たくさんあるファイルの名前を、一括変更したい!
具体的には、ファイルの前になにか接頭字を付けたい。こんなとき、皆さんだったらどうしますか?
さすがに手作業でやる個数じゃないしなー、プログラム書くかなー、と探していると、これまたコマンドで実現可能なことが分かった。(まぁプログラム書いたらそれはそれで勉強になるからいいんですけど)

for %i in (*) do rename “%i” “XYZ%i”

これで、そのディレクトリのファイル名に一括してXYZが付く。

  1. Winキー+R「ファイル名を指定して実行」もしくは「スター

    ト」-「全てのプログラム」-「アクセサリ」から「コマンドプロンプト」を実行

  2. 変換したいフォルダのパスをコピーし、cdコマンドで移動。例:「cd C:\Users\dacelo\Desktop」で移動
  3. コマンド実行。

以上。こんな便利なテクニックを今まで知らずに生きてきてしまった。Windowsってまだまだすげーなー。

こちらの説明も詳しい。

「ren %i 2007_09_%i」
の部分が、ファイル名を変更するコマンドで、「%1」というファイル名を「2007_09_%i」に変更しなさいという指示を与えています。
ファイル名の一括変換-FOR %変数 IN (セット) DO コマンド:コマンドプロンプトの使い方

Page 1 of 3123»