Zend_Config_Iniで画面が真っ白に。
初歩的なことなんだと思うんですが、
Zend_Config_Iniでiniを読み込ませたときに、画面が真っ白(ホワイトアウト?)に
なっちゃったわけですよ。
色々テストしてみた結果、読み込み側じゃなく、
読み込まれるIniファイルに問題があったわけですよ。
【誤】
test = ‘test’
【正】
test = “test”
ようするにシングルクウォート(シングルコート)ではダメで、
ダブルクウォート(ダブルコート)では大丈夫ということです。
本当にそういうことなのかどうかはわからんが、parse_ini_fileの説明に
「ini ファイル上の値に英数字ではないものがある場合、 ダブルクォート(“)で囲う必要があります。 」
とあるので、ダブルコートのみOKなんでしょうね。
そうなんでしょうね。
最近こんなんばっかりです。
ZendFrameworkのおすすめ書籍
Imapサーバーとして「dovecot」を導入
「dovecot(ダブコット/ドベコット)」
社内の敏腕サーバエンジニアの人が日報に書いてたので、気になってたわけだが、
IMAPサーバー(アイマップ)がほしくなってきたので、
一般に流通している「Courier-IMAP」ではなく、「dovecot(ダブコット/ドベコット)」を導入してみようと思います。
実際に興味があったのもそうだし、インストールがこちらのほうが楽そう!
どう楽そうかというと、「Courier-IMAP」だとrpmパッケージがあるとか、
yumで入れれるって話はあまり聞いたことがなく、自分でrpmにしないといけないとか
あるのが、面倒なんですが「dovecot」はyumでガバっと入る。すごくいいよね。
では、ここから実際にいれていこうと思う。
1. yumを利用して「dovecot」をインストールする
yum -y install dovecot
2. 設定ファイルを自分好みに修正する(今回は必要最低限で)
vi /etc/dovecot.conf
※とりあえず今回はimap, imapsだけあればいいので、他は消して、コメント解除。
#protocols = imap imaps pop3 pop3s
↓
protocols = imap imaps※メールボックス形式をMaildir形式とする。実際にはちょっと上に例があるので、コピペでOK。
#mail_location =
↓
mail_location = maildir:~/Maildir※SSLの設定を有効にする。証明書についてはデフォルトでついてる?
#ssl_disable = no
↓
ssl_disable = no#ssl_cert_file = /etc/pki/dovecot/certs/dovecot.pem
#ssl_key_file = /etc/pki/dovecot/private/dovecot.pem
↓
ssl_cert_file = /etc/pki/dovecot/certs/dovecot.pem
ssl_key_file = /etc/pki/dovecot/private/dovecot.pem
3. サーバー起動時に自動起動するようにリンク作成
ln -s /etc/rc.d/init.d/dovecot /etc/rc.d/rc3.d/S86dovecot
※ちなみに、停止時のリンクは自動で張られているので不要。「K35dovecot -> ../init.d/dovecot」
4. いざ「dovecot」起動。(テストをかねてrc3.dのなかので。)
/etc/rc.d/rc3.d/S86dovecot start
参考:hf164.com
SambaとSELinuxではまる。の章
ローカルエリア上のPCにCentOS5といういわゆるLinux環境があって、
そこにパソコンから接続できるようにSambaをいれようとしたんですが、
Jul 30 04:35:33 hattara smbd[7963]: [2010/07/30 04:35:33, 0] smbd/service.c:make_connection_snum(1013)
Jul 30 04:35:33 hattara smbd[7963]: ‘/home’ does not exist or permission denied when connecting to [haragon.local] Error was 許可がありません
こんな感じのエラーがズラズラとでてくるわけですよ。
こちらをグーグル先生にお問い合わせして調べたところ、
SELinuxというセキュリティ機能が問題なんじゃないかというのがでてきたわけです。
特定ユーザ(Sambaでログインするユーザ)の領域だけを許可するときは、
/usr/sbin/setsebool -P samba_enable_home_dirs 1
を使うようですよ。
たとえば、testというUnixユーザを作ってあって、
そのユーザの領域が/home/testだったら、そこをSamba共有するなら
このコマンドでいいんではなかろうか。
※使ってないので、わからんけど。
で、今回私がやりたいのは、/homeというシステム領域部分を
がっぽりと ぼっこりと共有していきたいので、
/usr/sbin/setsebool -P samba_export_all_rw on
上記のようなコマンドが必要なようだ。
というのが、書いてあったが、ダメだった。。
どうせLAN内で利用するサーバだし勉強用のやつなんで、
とりあえず今回はSELinuxとオサラバすることで、回避しようと思う。
※ちなみに本当にSELinuxが動いてるか確認する場合は
/usr/sbin/getenforce
このコマンドの結果でわかります。
Enforcing なら有効
Permissive なら無効
一時的にSELinuxを無効(オフ)する方法
/usr/sbin/setenforce 0
一時的にSELinuxを有効(オン)する方法
/usr/sbin/setenforce 1
上記の方法でSELinuxの状態を変更することはできるわけだけども、
これは永続的な対策にはならないのです。
サーバを再起動すると、また設定ファイルを読み込んで状態は戻ります。
そこで、永続的に設定を適用したい場合は、以下のようにします。
永続的にSELinuxを無効(オフ)する方法
vi /etc/selinux/config
SELINUX=enforcing
↓
SELINUX=disabled
永続的にSELinuxを有効(オン)する方法
vi /etc/selinux/config
SELINUX=disabled
↓
SELINUX=enforcing
これでとりあえず大丈夫。
SELinuxを停止したあとは、問題なくSambaにつながりましたとさ。
よかったよかった。
気が向いたら、今度SELinux起動したままどうにかなるか試そうかな。
DELL T105にディスクを増設
DELLのT105を利用しているわけですが、ディスクの容量が少なくなってきたので、
セカンダリのブランケットがあまってたので、ディスク増設しました。
そのときの手順を簡単にまとめてみます。
1.物理的にハードディスクをセカンダリのポートにさす。(デフォルトだと1個ブランケットがあまってるので、それにディスクをいれてさす)
2.増設ディスク(セカンダリディスク)のデバイスパスを調べる
※SATA系のディスクの場合には、SCSI認識になるので、だいたいの場合は、デフォルトディスクがsdaで増設ディスクがsdbになると思う。
基本的には、sd* (*にはa,b,c,dとパーツが順番に登録される)
dmesg | grep sd
(※以降は、増設ディスクが、sdbとして書きます)
3. ディスク領域を作成する。
#/sbin/fdisk /dev/sdb
Command (m for help): n ←「n」を入力しエンター
Command action
e extended
p primary partition (1-4)
p ←「p」を入力しエンター
Partition number (1-4): 1 ←「1」を入力しエンターFirst cylinder (1-243201, default 1): ←何も入力せずにエンター
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-243201, default 243201): ←何も入力せずにエンターCommand (m for help): p ←「p」で内容を確認
Disk /dev/sdb: 2000.3 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System
/dev/sdb1 1 243201 1953512001 83 LinuxCommand (m for help): w ←「w」で実行
以下のようなのが表示されたら完了
The partition table has been altered!Calling ioctl() to re-read partition table.
Syncing disks.
4.ファイルシステムを作成する。
# /sbin/mkfs -t ext3 /dev/sdb1
※上記はext3で作成していますが、環境にあわせて指定してください。
5.増設ディスクのマウント用のpath(領域)を作成する
mkdir /home2
6.とりあえずマウントしてみる。
mount /dev/sdb1 /home2
7.再起動後も正常にマウントされるようにfstabを記述する
vi /etc/fstab
/dev/sdb1 /home2 ext3 defaults 1 2
—-
※補足・・・・
メインの領域については、LVMを組んでいるので、
今回の増設分もLVMを設定しようか悩んだものの、
バックアップ用途なので、明確にディスクが把握できたほうがいいかなと思って、
そのままにしました。
addRawPostDataはPOSTじゃなくてinput!!
HTTP_RequestとかHTTP_Client(HTTP_Requestのラッパー)とか使っちゃうわけですが、
昨日うまく動かなくて、調べてたことを纏めておこうと思います。
HTTP_Requestでデータを渡すときの方法が2通り?ありまして、
1個目のパターンが、
$request =& new HTTP_Request();
$request->setURL($uri);
$request->setMethod(HTTP_REQUEST_METHOD_POST);
$request->addPostData(“data”, $data);
$request->sendRequest();
$code = $request->getResponseCode();
$response = $request->getResponseBody();
これの場合、$dataという送りたい値は、addPostDataメソッドで送付しているので、
受け側では、$_POST($postData = $_POST; みたいに)で取れるわけですよ。
次が、
$request =& new HTTP_Request();
$request->setURL($this->_uri);
$request->setMethod(HTTP_REQUEST_METHOD_POST);
$request->addRawPostData($data,false);
$request->sendRequest();
$code = $request->getResponseCode();
$response = $request->getResponseBody();
これの場合、送りたい$dataの値は、addRawPostDataメソッドを利用しているので、
受け側では、$_POSTでは受け取ることができない!わけですよ。
この場合には、受け側で、file_get_contentsやfopenで開いて
php://inputの中身を取得する方法になるようです。
$postData = file_get_contents(“php://input”);
みたいに
知らなかったので、ごっぽり調べることになりました。。。。
Samba環境に日本語ファイル名が保存できない!
まあ、いまさらな話ではあるんですが、自宅でSamba経由で新規ファイルを作成しようと、
右クリックで「テキスト文章」を選んで作成しようとしたわけですよ。
すると、普通「新規ファイル.txt」みたいのができあがるわけなんですが、
—————————
ファイルを作成できません
—————————
ファイル ‘新規テキスト文書.txt’ を作成できません。
ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。
みたいなエラーがでたわけですよ。 で、色々調べましたけど、
Sambaのバージョンによって、日本語ファイルの扱いが違うわけですよね。
そうですよね。
@ITさんに書いてありましたよ。それらしいことが。
Samba 2.2系列までは
[global]
client code page = 932
coding system = SJIS/EUC/CAP/HEXなどSamba 3.0系列までは従来のパラメータは廃止され、代わって新しく追加された、
[global]
unix charset = CP932/EUCJP-MS/UTF-8など
dos charset = CP932
display charset = CP932/EUCJP-MS/UTF-8など
これで、Sambaの再起動「/etc/rc.d/init.d/smb restart」でなおりましたとさ。
こんなんで時間とられてちゃ せわないわい。
CentOSで作るUSBLinux
最近ちょっと気になりはじめてたんですが、
USBメモリーも安くなってきたし、USB-Linuxなるものを試してみようかと。
どこからともなく、いまさら?と聞こえてきそうですが気にしません。
まずはディストリビューション選び。
まあ、DSL?とかがいいとかUbuntuがいいとかいろいろ書いてありましたが、
男は黙って、CentOSですよね。やっぱり。レッドハットのお膝元ですよ。
(ただ、CentOSを利用する環境になれてるからなのは秘密です。)
まずはインストールするためには、
突っ込むためのツールをGETせんといかんわけです。
fedorahosted さんにある liveusb-creator
を利用しようと思うので、こちらのサイトに伺うわけです。
で、サイトの「Download」のところの「Windows」のところにある
「liveusb-creator-3.9.1-setup.exe」なるものをダウンロードしてきて、
Windowsさんにインストールするわけですよ。
※一応このサイトには、Linux用のパッケージについても書いてありました。
yumでいれりーな と書いてありましたね。
でも今回はWindowsなんで気にしません。
インストールは、普通どおりExeファイルを実行すればいいんですよ
フォルダを指定して、インストーーーール!!
そしたらかってにソフトが起動してくるわけですよ
「Use existing Live CD」
「Download Fedora」
「Target Device」
「Persistant Storage」
という項目がでてくるわけですよ
とりあえずディストリビューションがないので、そのままにしとく。
先にディストリビューションを探してくることにしましょう。
先ほどいったとおり男はだまってCentOSなので、
http://centos.org/にいきますよ。
「Download: i386」こちらのリンクをおして、
そのご適当なアーカイブ置き場のリンクを選択するわけですよ。
今回は、JAPANのサイトである「
http://ftp.nara.wide.ad.jp/pub/Linux/centos/5.4/isos/i386/ 」を利用。
最新版は、5.4っぽいので、これでいきますよ。
こちらにいったら、「CentOS-5.4-i386-LiveCD.iso」なるものを
ダウンロードしてくるわけですよ。
ダウンロードがおわったら、もう一度liveusb-creatorの画面にもどりまして、
「Use existing Live CD」の「Browse」でダウンロードしたisoファイルを指定してあげるわけですよ。
そしたら、下の白いボックスのところに、isoファイルが表示されます。
次に「Target Device」ですが、Windowsのマイコンピュータを開いて、
利用したいUSBのパーティションの英字を確認して、それを選択します。
最後が、「Persistant Storage」なわけですが、よくわからないが書き込みされる領域について質問されているのだろうか。
とりあえず8GBのUSBメモリなので、最大で指定できる「7006MB」にしておく。
あとは、「Create Live USB」ボタンをおしたら、処理が走り始めましたよ。
phpの連想配列をXMLに落とし込む
phpで作った連想配列をXML形式で吐き出したい場合の例を作ってみました。
<?php
require_once(“XML/Serializer.php”);
$aaa = array(
‘bbb’ => ‘ccc’,
‘ddd’ => ‘eee’,
‘fff’ => ‘ggg’,
);
$options = array(
‘encoding’ => ‘UTF-8′, // ヘッダー情報で指定するエンコード
‘addDecl’ => true, // ヘッダー情報を表示する
‘rootName’ => ‘result’,
);
$obj = new XML_Serializer($options);
$obj->serialize($aaa);
$xml = $obj->getSerializedData();
echo $xml;
?>
上記で実行したものの結果が以下のようにでてきます。
<?xml version=”1.0″ encoding=”UTF-8″?>
<response>
<bbb>ccc</bbb>
<ddd>eee</ddd>
<fff>ggg</fff>
</response>
今年1冊目の勉強本読了
正月からチマチマと読んでいたビジネス書を読了。
内容としては、風林火山などで有名な孫子の言葉になぞらえて、今のビジネスシーンでは、
どういう受け止め方ができるかというあたりの考え方が載っている。
「孫子の兵法」のことがマンガで3時間でマスターできる本 (アスカビジネス)
状況を見極めて、決断をきちっとして、適切な対処を行うということ。
まあ当たり前なんだけど、それができないことが多い。
とくにその時代でいう将・国のあたりに対する話がかいてあり、
今のビジネスシーンでの企業経営側、人の上にたつ立場の人は、
一度読んでみる価値があると思いました。
もしよければ、ご一読ください。
コマンドラインからSQLの結果をファイル保存する
DBでSELECTとかする場合に、検索結果を表示したい場合は、
使い回し安さなどの理由で、CSEとかAccessとかでやることが多いのですが、
データ量が増えてくると、SELECTが終わっても表示部分で時間がかかってしまい、
タイムロスが大きくなるというのがあります。
そこで、Linux上でコマンドラインからSQLを実行して、ファイルに保存する方法を
一応メモしておきます。
mysql -h データベースホスト名 -u ユーザ名 -p データベース名 < SQLを書いてあるファイル名 > 出力したいファイル名
※事前にSQLを別のテキストに書いておく必要があります。