2006.08.19

Category: PHP / Tags:

.htaccess での phpの設定

.htaccess でPHPの設定を変更する場合の書式は
php_flag と php_value を使う方法があります。
前者は、true or false (On or Off) の場合に利用して
後者は、設定値がある場合に利用します。

<IfModule mod_php4.c>
php_flag display_errors On
php_value include_path “.:/var/www/vhosts/www.hoge.com/html/php”
</IfModule>

の感じになります。

2006.08.18

Category: PHP / Tags:

Pear の Imagesライブラリー

Image_Graph あたりの、ものが利用できるか試してみたけど。
とりあえず、結論。
日本語が通らない。うん。たぶん。
というわけで、利用するのは難しいと思う。。

2006.08.18

Category: Command / Tags:

logrotate & bash で日付付のログをバックアップする。

今回の日付付ログファイルは、logrotateで取得するログをコピーする形で設定した。
ログは、
/var/log/httpd/www.domainname.com
の中に
www.domainname.com_access_log
の名前で保存されているものとする。
logrotateの設定
/etc/logrotate.conf – 大本の設定があるので確認すること
/etc/logrotate.d
の中に
www.domainname.com.log のファイルを作成、内容を記載していく
#vi www.domainname.com.log

/var/log/httpd/www.domainname.com/*log {
daily #日別ログ ほかに monthly weeklyなど
rotate 365 #一年分作成 指定した回数だけローテーションする ほかにsizeなど
noolddir #ローテーション対象のログと同じディレクトリにローテーションされたログを格納する。
#ディレクトリ指定は、olddir ディレクトリ名
ifempty #ログファイルが空でもローテーションする。逆は notifempty
missingok #ログファイルが存在しなくてもエラーを出さない 逆はnomissingok
sharedscripts #複数指定したログファイルに対してpostrotateまたはprerotateで記述されたコマンドを実行する。
postrotate #ログローテーション後に
/bin/kill -HUP cat /var/run/httpd.pid 2>/dev/null 2> /dev/null || true
endscript #ここまでのコマンド実行する。逆は、prerotate – endscript
}

#以降のコメント部分は実際には記載していません。
日別でログを取得したいとの要望だったので、rogrotateの設定では、毎日365日の保存の設定にしました。
次に、logrotateで切り離されたログをリネームして別途保存するシェルスクリプトを作成
daily_backup_log.sh

#!/bin/bash
d=date “+%e”
w=date “+%w”
y=date “+%Y”
m=date “+%m”
d=expr ${d} – 1
d=printf “%02d” ${d}
log_date=date -d ${y}${m}${d} +%Y%m%d
from_dir=/var/log/httpd
to_dir=/var/www/backup_log
cp ${from_dir}/www.domainname.com/www.domainname.com_access_log.1.gz ${to_dir}/www.domainname.com/www.domainname.com_access_log_${y}${m}${d}.gz

ちなみに、monthly_backup_log.sh の場合はこんな感じで
monthly_backup_log.sh

#!/bin/bash
d=date “+%d”
w=date “+%w”
y=date “+%C%y”
m=date “+%m”
if [ ${m} -eq 12 ]
then
m=01
else
m=”0″expr ${m#0} – 1
fi
from_dir=/var/log/httpd
to_dir=/var/www/backup_log
cp ${from_dir}/www.domainname.com/www.domainname.com_access_log.1.gz ${to_dir}/www.domainname.com/www.domainname.com_access_log_${y}${m}.gz

最後に、このシェルスクリプトを動かす、クーロンの設定

# 毎月1日の7時に動作
00 7 1 * * /var/www/backup_log/monthly_backup_log.sh
# 毎日7時に動作
00 7 * * * /var/www/backup_log/daily_backup_log.sh

以上で設定完了です。
cronの設定は、rogrotateのところで

postrotate
/bin/kill -HUP cat /var/run/httpd.pid 2>/dev/null 2> /dev/null || true
/var/www/backup_log/daily_backup_log.sh
endscript

としても問題ないと思います。

2006.08.17

Category: Command / Tags:

tar – 書庫・圧縮・解凍コマンド

基本的な使い方
圧縮(アーカイブ作成)
ディレクトリ hoge 以下をまとめて圧縮

tar cvfz hoge.tar.gz hoge

解凍(展開)
hoge.tar.gz が対象ファイルとして

tar xvfz hoge.tar.gz

オプションの詳細

c アーカイブを新規に作成する
x アーカイブからファイルを取り出す
-v 処理したファイルの一覧を詳細に表示する
-f 指定したアーカイブ・ファイルまたはデバイスを使用する。初期値は/dev/rmt0
-z gzipを通して処理する

つまりは、
cvfz の場合は、指定したファイルBに対して、アーカイブファイルAを作成し、gzipで圧縮をかける。経過の表示付き。
xvfz の場合は、指定したファイルに対して、gzipで解凍をして、アーカイブを展開して元の状態に戻す。経過表示付き。
という感じでしょうか。

PHPのコメントの書式 -Zend Frameworks phpDocumentor にのっとって

詳しくは、Zend Frameworks のPHP の書式
http://framework.zend.com/manual/ja/coding-standard.coding-style.html
に基本的にしたがっていったほうがよさげ
とりあえず、関数(function)の書式だけメモ

/**
* 説明○○を○○に変換する関数
* @access public なくてOK 関数宣言でわかるから。
* @param string $str 引数の説明
* @return string 返値の説明
* @throws exceptionclass [description]  関数/メソッドが例外をスローする場合に記載
*/

function getFunction($str, $flag)
{
// ここに処理
return $val ;
}
型の所は

string
integer
object
array
mixed(いろんな型が返る場合)
resource(リソース型)
boolean
void(返値なし)

などあります、
@accessは、

public
private
protected

ですが、実際は書かなくてOKなので、特に気にする必要はないでしょう。
ちなみに、classの説明は

/**
* クラスについての短い説明
*
* クラスについての長い説明 (もしあれば)…
*
* @copyright 2005 Zend Technologies //著作権
* @license http://www.zend.com/license/3_0.txt PHP License 3.0 //ライセンス
* @version Release: @package_version@ //version
* @link http://dev.zend.com/package/PackageName // link
* @since Class available since Release 1.2.0 //since
* @deprecated Class deprecated in Release 2.0.0 //deprecated
*/

ほかに

@package パッケージ名
@author 著作者 <著作者メール>

とかあってもいいかも

2006.08.07

Category: PHP / Tags:

defined — 指定した名前の定数が存在するかどうかを調べる

defined — 指定した名前の定数が存在するかどうかを調べる。

if(! defined(”HOGEFUGA”) ){ // ”(ダブルコーテーションで囲む必要あり)
difine(”HOGEFUGA”, true);
}

と、エラーなく定義してあげる事ができます。
あまりしすぎると、スパゲティーソースになりそうなのでしたくないのですが、
拡張で定数を定義の追加が必要なとき、ちょっと便利かも

2006.08.03

Category: PHP / Tags:

phpをバックグラウンドで処理をする場合[forkの代用]

1.system関数やexec関数などを使います。
2.結果のリダイレクト先を指定
3.最後に&をつけて、バックグラウンドで実行
以上を守って行います。
/tmp/bg.php
を、バックグラウンドで実行したい場合(bg.phpには、実行権限がついているものとする)

system(”/tmp/bg.php > /dev/null &”)

2の結果のリダイレクトの部分は > /dev/null . この場合は破棄する(ゴミ箱にすてる)になります。
3のバックグラウンドで実行のところは 最後の & の部分になります。(unixの仕組みです)

2006.08.02

Category: PHP / Tags:

pukiwiki – menuのカスタマイズ

pukiwiki で、メニューを修正したい場合、はじめ悩むかもしれない。
(僕はどうするのかなやんでしまった。)

pukiwiki.php?cmd=edit&page=MenuBar

のように、MenuBarを対象にエディット画面を開くとメニュー部分を編集
できるようになります。
編集時、
&edit(MenuBar,noicon){edit};
と記載しておくと次から、メニューバーの編集へのリンクができます。
menubarから、それぞれのページにリンクをはるのは
- [[PageName]]
と通常通りにリンクを張るしかないみたいです。(未確定)

2006.08.02

Category: PHP, PostgreSQL / Tags:

addslashes()ではなくpg_escape_string()を使おう

addslashesも、pg_escape_stringも文字列をエスケープさせる関数であるが、
postgreSQLに、データを流し込む(sqlを作成する)場合は、
addslashesでなく、pg_escape_stringを使うこと。
詳しいことは面倒なので
http://itpro.nikkeibp.co.jp/article/COLUMN/20060530/239359/?ST=lin-server&P=3
で確認してほしい。
要は、エスケープの方法が違うので、pg_escape_stringのほうが安全ということです。
ちなみに、postgreSQLをより安全に使うためには、
フロントエンドとバックエンドの文字コードは合わせておいたほうがいいみたいです。
つまりは、SJISは利用するなって事です。

2006.08.01

Category: PHP / Tags:

pukiwiki – pukiwiki.ini.php

とりあえず、編集しておいた方がいいところ。
114行目付近
$page_title = ‘PukiWiki’;
193行目付近
$adminpass = ‘{x-php-md5}!’;
別途 md5.php というファイルを作成して、

<?php
echo md5(’YourPassWord’);
?>

の内容を記載して、ブラウザからアクセスすると。

1a1dc91c907325c69271ddf0c944bc72

の様な文字列ができるので、それを、コピペして

$adminpass = ‘{x-php-md5}1a1dc91c907325c69271ddf0c944bc72′;

とする。

« Older Entries