2009/1/24 土曜日

Apache PHP環境 セットアップ

Filed under: 開発技術関係 — admin @ 0:31:06

windowsXP + Apache 2.6 + PHPにてテスト動作環境をセットアップする方法を簡単に説明

1.Apache win32版をインストール

2.PHPをzip形式でダウンロード、C:\直下におく

3.2でおいたc:\phpフォルダ内にあるphp5ts.dllファイルをc:\windows\system32フォルダ内へ突っ込む

4.c:\phpフォルダ内php.ini-distファイルをphp.iniにリネーム

5. php.iniファイルの修正

5-1.doc_root=”C:/Program Files/Apache Software Foundation/Apache2.2/htdocs”
(インストール先)に書き換える。

5-2.extension_dir=”C:\php\ext” に書き換える

5-3. マルチバイト対応関数を利用可能にするため、extension=php_mbstring.dllの;をはずす

5-4.
・mbstring.language=japaneseの;をはずす
・mbstring.internal_encoding=utf8の;をはずし、言語を変更(※好みでEUC-JP、SJIS、UTF8切り替え)
・mbstring.http_input = autoの;をはずす
・mbstring.http_output = SJISの;をはずす(※使用言語注意)
・mbstring.encoding_translation=0nの;をはずし、OFFをONにする
・mbstring.detect_order=autoの;をはずす
・mbstring.substitute_character=none;の※先頭の;をはずす

6. php.iniファイルをc:\windows\フォルダへ突っ込む

7.それぞれの記述の近い場所に追記(httpd.confファイルの修正)

・LoadModule php5_module c:\php\php5apache2_2.dllを追記
・DirectoryIndex index.phpを追記
・AddType application/x-httpd-php .phpを追記
・AddType application/x-httpd-php-source .phpsを追記

8.Apacheを再起動

9.動作チェックindex.phpをapacheフォルダのhtdocsフォルダに作成

<?php
phpinfo();
?>

サンプルスクリプトを動作検証、PHPのバージョンが表示されたらOK

※注意事項
・円マークではなくバックスラッシュにする必要があるので注意。
・エラーが出た場合、syntax errorならば、構文が違う。
・エラー箇所の行番号が描かれているのでチェックする。

●追記(PHP.iniファイルにて)

・PHPのイメージ関数を使いたい場合extension=php_gd2.dllの;をはずす。
・exif_imagetype関数を使いたい場合、extension=php_mbstring.dllのあとに読み込ませる必要があるため、順番を入れ替え、

extension=php_mbstring.dll
extension=php_exif.dll

のように記述する。その他関数については参考ページを乗せて置くので、そちらを参考にしてもらいたい。

参考URL:http://php.atpedia.jp/php/ja/install.windows.extensions.html

2009/1/14 水曜日

cookie 7個セッション制限と4Kbの壁

Filed under: 開発技術関係 — admin @ 22:51:40

Bad Request

Your browser sent a request that this server could not understand. Size of a request header field exceeds server limit.

cookieの4KB制限を突破した場合、上記のようなメッセージが表示される。このメッセージが表示された場合、cookieを削除しないことにはそのサイトへのアクセスはできない。

さてさて、

テキストフォームに対して、1万文字の一時保存をcookieにて保存しようかと考えていたが、1文字のマルチバイト文字を扱うために、Unicodeでは1文字あたり9倍にまで膨れ上がってしまう。また、200文字区切りで複数のcookieに分割したところ、7個以上でサーバとのセッションが切断されてしまった。

また、cookieは20個以上発行することができないといった制限があるようだ。

・・・おとなしくセッションつかえといったところだが、あえてcookieでやってみようと思ったが無理っぽい。ちなみに、セッションの場合、数100MB越えも余裕で扱うことができる。(データはサーバ側に保存されるため)

2008/6/21 土曜日

メモリリークを解消せよ メモリの無駄遣い

Filed under: 開発技術関係 — admin @ 0:33:43

Javaアプレットで文字を流す文字を修正する場合、動かす文字のy座標の位置を乱数を用いループ表示している。しかし、ここで問題が!

一定時間アプレットを動かしていると流す文字が消えて行ってしまうではないか!

40個のオブジェクト(一個あたりフォントサイズ36px、文字の長さ40文字)の位置配置計算をループでやるといった仕組みだが、3分ほどで一つも流れなくなってしまう。

描画をきれいにするためダブルバッファリングをしている。一時的にバッファを作成し、そこに一時的に描画し、それを再描画するというもの。

これによりメモリが一時的に占領・上書きが繰り返されるため、メモリリークと呼ばれるメモリの断片化が発生してしまう。プログラムのバグでよく多いのがこのメモリリークと呼ばれるもので調べるとメモリリークのバグを見つけるのは困難らしい。フリーソフトなどを使うとパソコンが重くなってしまうのはそのせいだ。

そのため、メモリリークを探すには専用ソフトを使うのが望ましい。

・詳細情報ソース<@IT>
http://www.atmarkit.co.jp/fjava/rensai3/debug02/debug02_1.html

2008/6/9 月曜日

コメント流す技術 Photoip.NET

Filed under: 開発技術関係 — admin @ 1:15:53

絵師様が投稿してくださった画像

うまいなぁ・・・

Photoip.NETの技術をちょこちょこと公開していこうと思うが、なかなか開発が終わらないのが現実。開発状態のを公開してもただのゴミだしなぁ…ここは非常に難しいところかもしれない。

はてさて、画像の上にコメント。このシステムはニコニ●動画が登場する前からあった技術で特に新しいものではない。仕組みとしてはレイヤーを用いる。レイヤーとはPhotoShop等に用いられているアレのことです。画像レイヤーを最背面に配置し、その上に透過レイヤーとしてコメントを流すようにする。横から見れば三次元だが、正面から見れば二次元といった具合だ。

コメントを流すアルゴリズムはニコニ●動画 ではBlackBOX化されているため、それを再現するにはどうしたらよいかが問題となったが、流す処理は難なく製作することができた。流す向きとしては右から左、左から右、上から下、下から上、往復が可能。(HTMLタグ標準、電子掲示板とおなじ)

ここまでは誰でもできる。しかし、問題はここからだ。コメント配置計算と速度処理のアルゴリズムを組まないといけない。(と言ってもすぐできそうな気もしますが、忙しくて時間が…) コメント以外にもさまざまな機能を計画しているが、あとは時間との戦いとなる。

計画が没になったのも多数ある。その中に画像ジェネレータといったものを作ろうとしていた。Web上で画像編集できたら編集ソフトとか買わなくてもいいよね。といった形で作ろうと思っていたが、ググってみたらすでにあった。 orz

http://pixenate.com/

2008/5/31 土曜日

アップロードの問題 PHP セーフモード

Filed under: 開発技術関係 — admin @ 15:53:53

イラスト 新規登録システムの修正版をやっとのことで開発することができた。一か月もかかってしまった・・・。 orz

今回の登録システムはこれまでJPGのみであった登録システムを修正して、新たにアニメーションGIF、PNGファイルを対応させるといったもの。そこで問題になったのはサーバ側のPHPがセーフモードで動作しているという点だ。

セーフモードPHPの場合、PHPスクリプトを使用してアップロードした場合の障害としては、すべてのパーミッションが600になり、所有者がApacheになってしまい、呼び出すことはおろか、URLによる直接指定でも表示できなくなってしまうというもの。

アップロードしたものは使うことができないのか!?

といった問題点があったが、調べれば調べるほど、どうも セーフモードPHPで動作しているレンタルサーバはすべて同様の症状が出るみたいだ。Photoip.Netが動いているXREAサーバの場合、.htaccessファイルを設置できるため、 PHPファイルを無理やりCGIファイルとして認識させることで強制的に所有者(chmod関数)を変更することができる。また、この方法はPHPファイルに何も追記することなくできるのでソースを汚さなくても済む。

◆方法は以下に示すとおり(XREAサーバの場合、ほかのサーバでは使えるかどうかはわからない。)

1.同一ディレクトリに .htaccessを作成し、CGIとして動かしたいPHPファイルを指定し保存する。

・.htaccess の内容

<files test.php>
AddHandler application/x-httpd-phpcgi .php
</files>

※test.phpはCGIとして動かしたいPHPファイル名 。同一階層へ置く必要がある。また、この場合はPHPの負荷が高くなるので注意する必要がある。

上記のファイルを同一階層に置くだけでchmodコマンドが使えるようになる。 (私はアップロードしたファイルからサムネ画像を生成するためにGDを使う必要があり、壁にぶち当たっていた…)

2008/5/14 水曜日

サーバファイル暗号化

Filed under: 開発技術関係 — admin @ 0:16:37

サーバ上のファイルを暗号化するコードを公開。

これは、通常のファイルのバイナリ列を反転させるといったごく単純なもの。ファイル全体をバイナリレベルで読み込み、容量全体を排他的論理和で演算させ、通常では読み込めなくすることで、単純に解読できなくさせる。

暗号化を強化する場合は$seedに当たる文字列をより複雑にすればより強固になる。PHPでファイルを読み出し、コメントを表示するときに使ったりする。


<?php$src_file = “c:\sample\src.txt”;
$dist_file = “c:\sample\src.txt.encode”;
$fh = fopen($src_file,”r”);
if(!$fh){
echo “暗号化するファイルが開けません”;
exit();
}

//ファイルの内容を読み込みます
$src_text = fread($fh, filesize($src_file));
fclose($fh);

$len = strlen($src_text);

for($i=0;$i<=$len;$i++){
$seed .= “1″;
}

//ビット演算XOR(排他的論理和)で暗号化
$enc_text = $src_text ^ $seed;

//echo “暗号化結果: “.$enc_text.”\n”;

//復号化したテキストを保存
$fh = fopen($dist_file,”w”);

//ファイルを開けない場合は終了
if(!$fh){
echo “復号化記録ファイルが開けません”;
exit();
}

fwrite($fh,$enc_text);

//ファイルを閉じる
fclose($fh);

echo “暗号化した文字列をファイルに記録しました”;

?>

2008/5/3 土曜日

is not a valid MySQL-Link resource in エラー

Filed under: 開発技術関係 — admin @ 23:07:36

is not a valid MySQL-Link resource in エラーが出た場合はmysql_close()を疑ってみる。どうやらmysql_connectを使用している場合、自動的にコネクションは切断させるのでmysql_connectを付ける必要はない。某参考書には書いていたのでそれを信じ込んでしまうとエラーが出る。

私自身は ・・・かなり時間をとられた  orz

http://phpspot.net/php/man/php/function.mysql-close.html

情報ソース

どうやらmysql_close()はmysql_pconnect()で永続的接続をしていない場合は自動的に切断されるので必要ないとのことです。mysql_connect()でmysql_close()を使用したのが原因。

作ってたソースの一部を公開~(原因のソース)

//MySQLに接続します
$connect = mysql_connect($server, $user, $password);

//MySQLとの接続を解除します
$connect = mysql_close($connect);

2008/3/12 水曜日

トレンドマイクロ社のwebサイトが改ざん

Filed under: 開発のささやき, 開発技術関係 — admin @ 19:28:47

ウイルスバスターで有名なセキュリティ企業のトレンドマイクロ社のwebサイトが何者かによって書き換えられるといったことが発生した。

http://itpro.nikkeibp.co.jp/article/NEWS/20080312/296062/

webへの攻撃方法はSQLインジェクションと呼ばれる方法。フォームなどのデータをデータベースに登録する際に、妙な文字列を埋め込むことでデータベースのデータ破壊や改竄をすることができる。本サイトでは一応対策してるはずだが、他人事ではないのが味噌。

似たような攻撃方法で XSS(クロスサイトスクリプティング)と呼ばれる攻撃方法もある。これはフォーム登録時にフォーム文章の中にJavaScriptやPHP構文を埋め込んだりすることで、埋め込んだプログラムを実行させようといったものだ。

これらの攻撃を防ぐにはPHP関数htmlspecialcharsやstripcslashesなどを使い、HTMLタグの実行を無効化することができる。簡単な例は < を&lt;に、> を&gt;にしたりすることだ。

コレをすることでフォームから送られてきたタグ命令をただの文字列にすることができる。分散サーバ処理などをすると様々な問題点が付いてくるのでセキュリティ対策をしっかりしないといけない・・・。

2008/3/7 金曜日

ツマンネ

Filed under: 開発技術関係 — admin @ 17:45:11

ツマン ネツマン ネツマ  ンネツ マンネンというわけで描いてみた。

「自分のWebページへ貼り付ける」の場所に設置してあるフォームは1回クリックすることで全部を一気に選択することができる。これはJavascriptを用いることで一気に選択できるようにしている。

肝心のサムネ画像だが、専用のwebページを作成し、外部からIFRAMEを使い、読み出すことで実現している。問題は表示する範囲をうまく調整することが必要になる。

ちなみに一回のクリックでフォーム内の文章を全選択するJavaScript付きのソースはこのような感じ。

<input type=”text” name=”" size=”40″ value=”フォームの値” readonly=”readonly” class=”edit” id=”trackback_url” onfocus=”this.select()” />

2008/3/3 月曜日

Photoip.NETサーバ管理構成

Filed under: 開発技術関係 — admin @ 21:22:13

システム及び各種データの保管をどうするかを考えていたときのフローチャート?を公開します。

1.単一サーバ構成:一般的な方法。サーバ1台で運営するため、システム開発やデータ管理が容易。ただし、容量の堆肥化が発生した場合に対処できない。

2.完全分散サーバ構成:データベースから投稿データ、サムネ、コメントなど全てを分散させる構成。容量の堆肥化に左右されない利点があるが、データベース管理の複雑化や検索クリエ発行時に遅延が大幅に起きるのが問題。

3.データベース一括管理・データ分散サーバ構成:データベースのみ一台のサーバで保管し、投稿データ、サムネ、コメントなどのデータのみ分散させる構成。www1サーバのデータベースのみ堆肥化するが、検索クリエ発行の容易化とデータベース管理がしやすい、データ容量の堆肥化にすぐさま対処できるなどといった利点がある。

といったわけで、3のデータベースのみ一括管理し、他のデータを分散させる方式で開発を進めました。

詳細な図は以下に乗せておきます。

サーバ構成図詳細図

次のページ »

HTML convert time: 0.192 sec. Powered by WordPress ME