SQLの窓

2011年06月11日


Windows 環境で Pear のインストール

2013 年 : Pear インストール / Mail パッケージと実行サンプル( GMail でメール送信 )

Pear は、いったんダウンロードしてしまえば、それを別の環境に単純コピーでインストールする事ができます。それは、レンタルサーバでも同じでアップロードするだけで動作します。

ただ、いずれかのバージョンから go-pare.bat を実行する必要があるので、PHP のサイトより、5.2.17 をダウンロードし、c:\php5217 の中に php-cgi.exe がある環境を作り、そのフォルダ内をカレントとして go-pare.bat を実行しています。
http://pear.php.net/go-pear.phar をダウンロードして、php go-pear.phar と実行します
( PHP 5.2.17 VC6 x86 Non Thread Safe )


system か local の違いは、Windows のディレクトリに ini ファイルを作るかどうかですが、インストール元が欲しいだけなので、local を入力してやると、pear.ini がこのフォルダの中に作成されます。後は、Enter でインストールが開始されます。



警告が出ていますが、インストールは成功しているので Enter で続行します。



また、警告が出ていますが、インストールは成功しているので Enter で終了します。



pear.bat で、このままパッケージ処理をしようとすると、警告がでるので、こちらは対処方法がメッセージで表示されるので、その通りにチャネルの更新を行います。
pear channel-update pear.php.net

パッケージの正しい文字列は pear search File のように文字列の一部分から一覧を表示する事ができるので、パッケージ名を取得し、インストールします

( 例 : pear install -f -a -o File_Archive )

インストールのオプションは、pear help install で表示する事ができます
( -o はいらないと思いますが、一応念のためです )
-f, --force
	will overwrite newer installed packages
-l, --loose
	do not check for recommended dependency version
-n, --nodeps
	ignore dependencies, install anyway
-r, --register-only
	do not install files, only register the package as installed
-s, --soft
	soft install, fail silently, or upgrade if already installed
-B, --nobuild
	don't build C extensions
-Z, --nocompress
	request uncompressed files when downloading
-R DIR, --installroot=DIR
	root directory used when installing files
	(ala PHP's INSTALL_ROOT), use packagingroot for RPM
-P DIR, --packagingroot=DIR
	root directory used when packaging files, like RPM packaging
--ignore-errors
	force install even if there were errors
-a, --alldeps
	install all required and optional dependencies
-o, --onlyreqdeps
	install all required dependencies
-O, --offline
	do not attempt to download any urls or contact channels
-p, --pretend
	Only list the packages that would be downloaded
※ インストールとは関係ありませんが、PHP 5.3 以降では ※ error_reporting(E_ALL & ~E_DEPRECATED); を実行しておかないと ※ 実行時に警告が出るライブラリがあります ▼
Deprecated: Assigning the return value of new by reference is deprecated 
▼ 警告発生例( 5.3 以降でしか使わない場合は =& を = に変更しても良い )
$tmp =& new File_Archive_Reader_ChangeName_AddDirectory(
	$realSymbolic,
	$result
);



posted by lightbox at 2011-06-11 18:04 | PHP | このブログの読者になる | 更新情報をチェックする

2009年12月15日


PHP : php-5.3.1 の日付関数の注意点

PHP のマニュアル( date 関数 )には以下のように記述されています。
すべての日付/時刻関数は、有効なタイムゾーンが設定されていない場合にE_NOTICE を発生させます。また、システム設定のタイムゾーンあるいは環境変数 TZ を使用した場合には E_STRICT あるいは E_WARNING を発生させます。
で、結論として 5.3.1 で 以下のようなメッセージが出力されます
PHP Warning:  date(): It is not safe to rely on the system's timezone settings.You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ' 
Asia/Tokyo' for '9.0/no DST' instead in Command line code on line 1
マニュアルの記述には、バージョンによる変更履歴が書かれていますが、少なくとも、Windows 版では事実と一致しないようで、5.2.11 だとワーニングは出ません。どちらも php.ini 無しのデフォルトでテストしました。 結局、5.3.1 の場合は、PHP.ini に以下を設定します。 ( timezone の確認は、コマンドプロンプトから php --ri date でもできます )
[Date]
date.timezone = Asia/Tokyo
関連する記事 PHP のバージョンを 5.2 から 5.4 へ変更したところ、個別に date_default_timezone_set を実行するように言われました。
posted by lightbox at 2009-12-15 15:12 | PHP | このブログの読者になる | 更新情報をチェックする

2009年09月02日


PHP : 暗号化と複合( libmcrypt )

VB.NET でやるのも少し面倒そうだったので。バッチ処理でパスワードがバレバレになるのを防ぐ為に、まずは暗号化のテストです。途中の暗号化された文字列をbase64 でエンコードして取り出して使用します。
( こんな感じ : YjAbG+kJK/Lf4DL+0vlStkAk0cKP8+VZBZ6kIQ== )
<?
// phpinfo() で確認できたアルゴリズム
// cast-128 gost rijndael-128 twofish arcfour cast-256 loki97 rijndael-192
// saferplus wake blowfish-compat des rijndael-256 serpent xtea blowfish 
// enigma rc2 tripledes 

// php_mcrypt

	// 暗号モジュールをオープンします
	// マニュアルのディレクトリ指定は動作しませんでした
	// おそらく、libmcrypt.dll は、php と同じ場所で動作するようです
	// php 4.4.4 では全て同じディレクトリに入れて動きました。
	$td = mcrypt_module_open('rijndael-256', '', 'ofb', '');

	// mcrypt_enc_get_iv_size($td) で取得できる長さの文字列
	$iv = "12345678123456781234567812345678";
	$ks = mcrypt_enc_get_key_size($td);

	// キーを作成します
	$key = substr(md5('とても大事なキーです'), 0, $ks);

	// 暗号化処理を初期化します
	mcrypt_generic_init($td, $key, $iv);

	// データを暗号化します
	$encrypted = mcrypt_generic($td, 'とてもとても大事なデータです');

	// 暗号化ハンドラを終了します
	mcrypt_generic_deinit($td);

	// 復号用の暗号モジュールを初期化します
	$iv = "12345678123456781234567812345678";
	mcrypt_generic_init($td, $key, $iv);

	// 暗号化された文字列を復号します
	$decrypted = mdecrypt_generic($td, $encrypted);

	// 復号ハンドルを終了し、モジュールを閉じます
	mcrypt_generic_deinit($td);
	mcrypt_module_close($td);

	// 文字列を表示します
	echo trim($decrypted) . "\n";

?>


プログラムではそれを複合して元に戻して使おうというわけです。$iv は、モジュールを初期化する文字列でなんでもいいみたいなので、PHP マニュアルのサンプルで使用されていた関数を使用せずに適当な文字列を使用しています。しかし、この文字列と秘密のキーと二つ無いと復号はできません。

動作環境は、けっこう適当でバグ持ちのようで、WEB で古い記事を見ると前からそんな感じみたいです。Windows モジュールってけっこうこういうのは多いみたいですね

php5 でテストした後、php4.4.4 でもテストしています。これは、Bambalam PHP EXE Compiler を使って秘密のキーを隠蔽しようと思ってるからなんですが、テストはこれからです


タグ:PHP
posted by lightbox at 2009-09-02 23:24 | PHP | このブログの読者になる | 更新情報をチェックする

2009年08月02日


begin で始まるテキストで添付されたファイル(uuencode)を元に戻す方法

単純に PHP の convert_uudecode で戻ります。

1) メールソフトから begin と end の行を除いた間の行をコピー
2) テキストファイルとして保存する( LF 改行にして下さい )
3) PHP の以下のコードを実行する( 02.txt が対象ファイル )
<?
$a = file_get_contents( "C:\\TMP\\uu\\02.txt" );
$b = convert_uudecode( $a );
file_put_contents( "C:\\TMP\\uu\\02.jpg", $b );
?>

最初何事かと思いましたが、単純でした。


タグ:トラブル
posted by lightbox at 2009-08-02 03:18 | PHP | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり