2014年6月6日金曜日

HTML_QuickFormのPHP5.5対応(とりあえず)

まだ、PEARのHTML_QuickFormを使っているサイトがいくつか残っていてそのサーバを変えるということでPHP5.5対応しなければならなくなった。
phpとかDBがutf8で動いていたら問題ないんだけど、10年以上前のサイトで文字コードはEUC-JP。
全部作り変えるのは予算・時間的に無理なので少しだけ修正して対応。


問題点:フォームに日本語が表示されない

htmlspecialcharsがPHP5.4からパラメータが変わった模様。
htmlspecialcharsで変換した結果、空文字列になってしまっている。

というわけで、今回問題があったテキスト入力のフォームのファイル2つにちょこっと手を入れる。

pear/HTML/QuickForm/element.php
pera/HTML/QuickForm/textarea.php

この2ファイルの、「htmlspecialchars($value)」のように引数1つだけを渡している部分を、

$charset = HTML_Common::charset();
htmlspecialchars($value, ENT_COMPAT, $charset)

のような感じに修正。


ずいぶん前からQuickForm2を使えといわれておりますが対応できておりません。
そのうちFuelで書き直す。

Vagrant upできない

virtual boxをアップデートした後、再起動したときのこと。
vagrant up仕様とすると以下のエラーが出て動かない。

Vagrant could not detect VirtualBox! Make sure VirtualBox is properly installed.
Vagrant uses the VBoxManage binary that ships with VirtualBox, and requires
this to be available on the PATH. If VirtualBox is installed, please find the
VBoxManage binary and add it to the PATH environmental variable.

OSは、Windows7。

環境変数のPathに、VBoxManage.exeのディレクトリ「C:\Program Files\Oracle\VirtualBox」を追加してもだめ、環境変数にVBOX_MSI_INSTALL_PATHというのもあってそれも「C:\Program Files\Oracle\VirtualBox\」。
なんか調べるとwindowsではVBOX_INSTALL_PATHを読み取るとか。

環境変数に以下を追加してvagrantできるようになりました。

変数名:VBOX_MSI_INSTALL_PATH
変数値:C:\Program Files\Oracle\VirtualBox\



2014年6月2日月曜日

ldapまとめ

ldapに取り組んだとき、取っ掛かりが悪いのでメモを作ってたのを晒します。
(あくまで個人的なものです。信用しないように!)

属性名

属性名値の種類もともと の名前
c国名Country
cn一般名、人名Common Name
dcドメイン名Domain Component
o団体名The Organization
ObjectClassスキーマ-
ou部署名Organization Unit
snSumame
st都道府県State
uidユーザIDUser ID

ObjectClass属性

名前必須属性
dcObjectdc
organizationo
organizationalRolecn
organizationalUnitou
accountuid
simpleSecurityObjectuserPassword
inetOrgPersoncn, sn
posixAccountuid ( accountなど構造型オブジェクトクラスと一緒に使用する必要あり )
posixGroupcn

log level

レベル名称 記録内容 
メッセージを出力しない 
trace slapd内部の関数のトレース 
packets パケット処理のデバック情報 
args slapd内部の関数のトレースで引数も表示 
conns コネクション管理 
16 BER 送受信したパケット 
32 filter 検索フィルタ処理 
64 config 設定ファイルに関する処理 
128 ACL アクセス制御に関する処理 
256 stats コネクション、LDAP命令、結果 
512 stats2 送られたエントリのステータス 
1024 shell シェルバックエンドとの通信 
2048 parse エントリの解析処理 
16384 sync LDAP同期レプリケーション 
32768 none どのログレベルにも属さないもの 
65535 any 全てのレベルを表示 
ldapadd

オプション説明 
-H  LDAPサーバを参照するURIを指定する。プロトコル、ホスト、ポートのみ指定できる。
指定しない場合、ldap://localhost:389となる。 
-h  LDAPサーバを指定する。指定しない場合、ローカルホストになる ( 非奨励オプション。-Hの使用を奨励 ) 
-p  LDAPサーバのポート番号を指定する。指定しない場合、389となる ( 非奨励オプション。-Hの使用を奨励 ) 
-x 簡易認証設定 
-D  LDAPサーバの認証に使うDN ( バインドDN ) を指定する。指定しない場合は匿名接続となる。 
-w  LDAPサーバの認証に使うDNのパスワードを指定する。 
-W LDAPサーバの認証に使うDNのパスワードをプロンプトから入力することを指定する。 
-f  LDIFテキストフォーマットファイルを標準入力ではなく、指定したファイルから読み込む。 
ldapsearch

オプション説明 
-H  LDAPサーバを参照するURIを指定する。プロトコル、ホスト、ポートのみ指定できる。指定しない場合、ldap://localhost:389となる。 
-h  LDAPサーバを指定する。指定しない場合、ローカルホストになる ( 非奨励オプション。-Hの使用を奨励 ) 
-p  LDAPサーバのポート番号を指定する。指定しない場合、389となる ( 非奨励オプション。-Hの使用を奨励 ) 
-x 簡易認証設定 
-D  LDAPサーバの認証に使うDN ( バインドDN ) を指定する。指定しない場合は匿名接続となる。 
-w  LDAPサーバの認証に使うDNのパスワードを指定する。 
-W LDAPサーバの認証に使うDNのパスワードをプロンプトから入力することを指定する。 
-b検索の起点を指定。例えばBaseDNに「ou=dept,dc=unix-power,dc=net」に指定した場合は上位のエントリは検索対象外となります。
-s [Scope]検索範囲を指定します。[Scope]の値は「base」「one」「sub」の3種類です。「base」はBaseDNエントリのみです。「one」はBaseDNエントリ自身と直下のエントリ、「sub」はBaseDN以下全てのエントリを指します。-sに何も指定しなければ「sub」が適用されます。
[Filter]検索フィ ルタを指定します。例えば全てのエントリを抽出するには「(objectclass=*)」を指定します。また、cn属性が「tanaka」で終わるエントリを抽出するには「(cn=*tanaka)」とワイルドカードを指定できます。その他、複数のフィルタを組み合わせたAND検索やOR検索も実行できます。例えばcn属性が「tanaka」で終わり、かつcn属性が「taro」で始 まるエントリを抽出するには「(&(cn=*tanaka)(cn=taro*))」とAND検索を表す&を使って複数指定できます。OR検索には「|」、否定記号には「!」記号を使います。
[Attr]表示対象 とする属性を指定します。例えばあるエントリのtelephonenumber属性値を表示対象にする場合はAttrにtelnephoneNumberを指定します。何も指定しなければ全ての属性値が表示されます。
-L検索結果をLDIFv1フォーマットで表示する 
-LL 検索結果をコメントのないフォーマットで表示する 
-LLL 検索結果をコメント無し、LDIFバージョン表示なしで表示する。 


moodleリンク書き換え

moodleのサイトを移転してurlが変わった時のHTMLエディター内のurl等の書き換え方。

公式(http://docs.moodle.org/2x/ja/Moodle%E3%81%AE%E7%A7%BB%E8%A1%8C)の情報が古くて、 http://yourserver.com/admin/replace.phpが見つからなかった。

正しくは、

http://yourserver.com/admin/tool/replace/
とか
http://yourserver.com/yourdirectory/admin/tool/replace/


2014年3月4日火曜日

TCPDFにフォントを追加

以前は難しくて挫折してしまったTCPDFへのフォントの追加。
最新版6.0.062ならさくっと簡単にできました。

tcpdfを設置したディレクトリ内のtoolにtcpdf_addfont.phpがありこれを使います。

1.toolディレクトリにフォントファイルを設置します。

2.tcpdf/toolに移動

3.php tcpdf_addfont.php -i XXXX.ttf

埋め込み用のフォントを追加するのがこれだけでできる。超簡単。
3のコマンドで自動的にfontsディレクトリにフォントファイルがコピーされ関連ファイルが自動的に作成されます。

注意点は、tcpdf_addfont.phpを覗くとデフォルトの状態で相対パスでうまく動くようになっているので、このあたりをカスタマイズしているとtcpdf_addfont.php内のパスの設定なども変えないといけないことぐらいでしょうか。

2014年2月14日金曜日

CentOS6にFFMpegをyumでインストール

以前yumで入れたときはバージョンが古くて、結局ソースからコンパイルすることになって大変だったんだけど、RPM Fusionから新らし目のものを入れることができたのでメモっときます。

EPELレポジトリの導入
(既に導入済みだったので実際にはしてません。RPM Fusionが依存しているらしい)
# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-5-4.noarch.rpm

RPM Fusionレポジトリの導入
# yum localinstall --nogpgcheck http://download1.rpmfusion.org/free/el/updates/6/x86_64/rpmfusion-free-release-6-1.noarch.rpm http://download1.rpmfusion.org/nonfree/el/updates/6/x86_64/rpmfusion-nonfree-release-6-1.noarch.rpm

普段のyum利用時に干渉しないよう以下のファイルを開き enable=0 にしておく
/etc/yum.repo.d/rpmfusion-free-updates.repo
/etc/yum.repo.d/rpmfusion-free-updates-testing.repo
/etc/yum.repo.d/rpmfusion-nonfree-updates.repo
/etc/yum.repo.d/rpmfusion-nonfree-updates-testing.repo

FFMpegのインストール
(思わず入れてしまったがffmpeg-develは必要ない)
# yum install --enablerepo=rpmfusion-free-updates install ffmpeg-devel
# yum install --enablerepo=rpmfusion-free-updates install ffmpeg

かなり簡単にインストール可能。

2014年2月6日木曜日

Apache 2.4 の設定ではまる

Apache 2.4(ほんとは2.3から)アクセス許可周り設定が変わっています。

xamppのバージョンを挙げていつもどおりにvirtual hostの設定をしても 404 access forbidden。
つながりません。

こういう理由でした。↓
http://httpd.apache.org/docs/2.4/upgrading.html#run-time

今まで(2.2まで)は、(バーチャルホスト用の)ディレクトリのアクセス許可の設定を以下のように書いてました。

Order allow,deny
Allow from all

2.4からは、以下のようになる。

Require all granted

ググってもなかなか出てこないもんで少しはまりました。
ちゃんと公式ドキュメントに載ってるのにね。