[HTML] CSSレイアウトをしていてfloat指定すると外側のブロック要素からハミ出る現象をoverflowで回避する

CSSでレイアウトする事が全盛な昨今、

要素を「float: left;」と指定してレイアウトを組む事が多々ある。

一方でfloat指定すると外側のdivタグ等のブロック要素からハミ出る問題が発生する。

この問題の回避方法を一言でいえば、

外側ブロック要素に“overflow: auto;”と指定する

と回避できる。

簡単なことなんだけど、結構気がつかない。

備忘録を兼ねて。

投稿日:
カテゴリー: HTML/CSS

XDebugインストール&Eclipse(PDT)でPHPリモートデバッグを行う方法

今回の目的は、サーバOSでPHPコードを実行して、クライアントOS側でステップ実行等のデバッグ作業を行うところにある。

俺の開発環境は以下の通り。

  • Server OS: Windws XP Pro SP3
  • Apatch: 2.2.17.0
  • PHP: Version 5.3.4
  • MySQL: 5.5.10
  • Client OS: Windows 7 Home

ちなみに、サーバOSがWindwsサーバであってもXDebugはちゃんと動いてくれた。あたりまえか・・・

なお以下の作業を行う前提条件として、サーバOSには最低でも apache + PHP はインストール済みであることとする。

PDT(PHP Development Tools)の入手とインストール

PDTは以下のサイトより入手。

Pleiades All in One 日本語ディストリビューション

http://mergedoc.sourceforge.jp/index.html

ちなみに俺は

Eclipse 3.7.0 Indigo Windows 32bit ベース / Pleiades All in One 3.7.0.20110623 >> PHP >> JREなし

を選んだ。

PDTはインストールは不要。解答して任意のフォルダで実行するのみ。

ここらへんを詳しく知りたければ他のECRIPS系のサイトを参照のこと。

重要なポイントは以下の点。

  • 「ウィンドウ >> 設定 >> PHP >> PHPサーバ」でサーバ情報を入力すること。
  • 「ウィンドウ >> 設定 >> PHP >> PHP実行可能ファイル」でphp.exeとphp.iniを設定すること(※ネットワークドライブ上でもOK)。
  • 「ウィンドウ >> 設定 >> PHP >> デバッグ」で上記二つの設定を反映させること。

XDebug の入手とインストール

XDebug は以下のサイトより入手する。

俺は、

PHP 5.3 VC6 TS (32 bit)

を選択。

ちなみに、VC6 は Visual Studio 6系 でコンパイルされたもので、VC9 は Visual Studio 2008 でコンパイルされたものを指す。今回はサーバOSがそんなに新しいわけではないので、VC6を選択。おそらく、Windows Server 2008 とかお使いの場合には VC9 を使ったほうがよいのではなかろうか。

また、TSはスレッドセーフの略でマルチスレッド対応か否か、ということ。今回は・・・・べつにどっちでもいいんじゃね?開発環境だし、うごけばいいや・・・・ということで、スレッドセーフ版を選択した。

これらはお使いのOSやアナタのシュミに合わせて選択してほしい。

なお、LinuxへのXDebugインストールについては、他に腐るほど解説サイトが見つかったので、そちらを参考に。

このXDebugだが、DLL単体のソフトウェアなので、PHPにこのDLLを読み込ませるだけ。ということでphp.iniを編集する。

以下の行をphp.iniに追加する。

[Debugger]
zend_extension = "C:\php\Debugger\php_xdebug-2.1.1-5.3-vc6.dll"
xdebug.remote_enable=1
xdebug.remote_host = "192.168.21.1"
xdebug.remote_port = 9000
xdebug.remote_handler = "dbgp"
xdebug.remote_mode = "req"
xdebug.remote_log = "C:\php\xdebug_remote_log"
xdebug.profiler_enable = 1
xdebug.profiler_output_dir = "C:\php\xdebug_output"

各パスのあたりはお使いの環境に合わせて適宜修正のこと。

なんか、なくてもよい行もある気がするが、そこら辺は自分でしらべてくれたまへ。とりあえずこれで動くはず。

お約束通り、php.iniを編集したらapacheを再起動のこと。

正しくXDebugがインストールされたら以下のような箇所が表示される。

xdebugインストール成功_01

xdebugインストール成功_02

PDTでデバッグテスト

もうあとは説明する必要もないくらいだ。

プロジェクトを作成 >> 適当にPHPコードを書いて >> 当該行頭ダブルクリックでブレークポイントを設定して >> デバッグ >> F5でステップ実行

という感じである。

できない?

しらんがな (´・ω・`)y-~~

なぜ XDebug か?

世の中にはZend Debuggerなる同類のものもあるらしいのだが、こちらはPHP 5.3に対応しておらず、今後も対応する予定がないのだそうだ。したがって、XDebugを使用した。

もうひとつ、DBGなるものもあるらしいが、XDebugでできちゃったからもういいや~(´・ω・`)y-~~

「Windoes+Apache+MySQL+PHP」でのインストール設定手順メモ

「Windows + Apache + MySQL + PHP」の環境を構築する際に、いつも複数のサイトを見ながら設定していたのでまとめてみた。ただし、最低限のことしかしていない、且つ、開発環境を想定した設定になっているので、運用環境を構築する際には厳に注意されたし。なお、以下の手順は「apache2.2」、「php5.3」におけるインストール設定手順を記載している。

apacheの設定(httpd.confの設定)

標準ポートの変更

Listen 8080
↓
Listen 80

ドキュメントルートの変更

DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
↓
DocumentRoot "C:/www"

<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs">
↓
<Directory "C:/www">

日本語を優先的に表示

#Include conf/extra/httpd-languages.conf
↓
Include conf/extra/httpd-languages.conf

日本語を優先的に表示2

※C:¥[apacheインストールフォルダ]¥conf¥extra¥httpd-languages.confを修正

#DefaultLanguage nl
↓
DefaultLanguage ja

LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz .....
↓
LanguagePriority ja en ca cs da de el eo es et fr he hr it ko ltz .....

AddDefaultCharset utf-8 (※行追加)

CGIおよびPHPの実行許可

#AddHandler cgi-script .cgi
↓
AddHandler cgi-script .cgi

PHPモジュールの追加(※以下の行をすべて追加)

LoadModule php5_module "C:¥php¥php5apache2_2.dll"
PHPIniDir "C:¥php"
AddType application/x-httpd-php .php

PHPの設定(php.iniの設定)

環境変数へパスを追加

PHPインストールフォルダをWindowsの環境変数へ登録する。

php.iniの作成

php.ini-developmentかphp.ini-productionをリネームしてphp.iniを作成。

インクルードパスの修正(PEARのパスを追加)

※PEAR等のライブラリを使用しない場合は不要

※PEARのインストールは【ここらへん】をみながらやる

;include_path = ".;c:¥php¥includes"
↓
include_path = ".;c:¥php¥includes;c:¥php¥pear"

ドキュメントルートの指定

doc_root =
↓
doc_root = "c:¥www"

extensionディレクトリの指定

extension_dir = "./"
↓
extension_dir = "c:¥php¥ext"

タイムゾーンの指定

;date.timezone =
↓
date.timezone = "Asia/Tokyo"

mbstringの設定

;extension=php_mbstring.dll
↓
extension=php_mbstring.dll

MySQLへの接続

※MySQLを使わない場合は必要なし。
※他のDBを使用する時は別のサイトを参照の事。

;extension=php_mysql.dll
↓
extension=php_mysql.dll

;extension=php_mysqli.dll
↓
extension=php_mysqli.dll

default_charsetの設定

;default_charset = "iso-8859-1"
↓
default_charset = "UTF-8"

エラーを表示するように変更

※デフォルトでONになってる模様。

display_errors = Off
↓
display_errors = On

mbstringの設定

;mbstring.language = Japanese
↓
mbstring.language = Japanese

;mbstring.internal_encoding = EUC-JP
↓
mbstring.internal_encoding = UTF-8

;mbstring.http_input = auto
↓
mbstring.http_input = pass

;mbstring.http_output = SJIS
↓
mbstring.http_output = pass

;mbstring.encoding_translation = Off
↓
mbstring.encoding_translation = Off

;mbstring.detect_order = auto
↓
mbstring.detect_order = UTF-8,SJIS-win,eucJP-win

;mbstring.substitute_character = none;
↓
mbstring.substitute_character = none

以上

vsFTPdを導入したが、外部からFTPでログインできない

CentOSなどのLinuxサーバにvsFTPdを導入しようとしていて、

>USER ******
331 Please specify the password.
>PASS ******
500 OOPS: cannot change directory:/home/******
500 OOPS: child died

などのログが出てログインできない場合、

SELinuxが悪さをしている可能性があります。

(それ以前に接続すらできない場合はiptablesをstopしてみましょう)

一時的に

# setenforce 0

とコマンドしてSELinuxPermissiveモードに変更してみましょう。

そうすると幸せになれるかもよ?

なお、サーバを外部に公開する場合にはSELinuxの設定を見直してから後悔するようにしましょうね。

詳しくは↓で解説してくれています。

[Fedora core] vsFTPdの設定
http://vertex.air-nifty.com/blog/2006/09/fedora_core_vsf_20b9.html

感謝感謝。

あと、vsFTPdのアクセス制限などの設定(vsftpd.confの設定)は↓のサイトが非常に親切丁寧にわかりやすく解説してくれています。ありがたく拝読しましょう。

◇ローカルユーザー接続の設定(WBEL3,CentOS3,WBEL4,CentOS4)◇初心者のためのLinuxサーバー構築講座(CentOS 自宅サーバー対応)☆お便利サーバー.com☆
http://www.obenri.com/_ftpserver/local_user.html

ロリポップでPHPを使って開発をしていて、とあるサブドメインのみセッション変数が使えない不具合

表題のとおり、ロリポップでPHPを使って開発をしていて、とあるサブドメインのみセッション変数に値がまったく入らない現象が起こり、かなりハマったので備忘録として書いておく。

結論から言うと・・・
[ロリポップ!ユーザ専用ページ] →[WEBツール] →[PHP設定]
で当該サブドメインのphp.iniの設定変更画面に入り、
「session.auto_start」を「1」にするッ!!

「え~session_start()をちゃんと書いてるからいらねぇじゃん」と思うでしょ?
おれもそう思ったよ!!
でもこれONにしないと動かないのよ、なぜか!!

コンチクショウ!!

投稿日:
カテゴリー: PHP技術系

[PHPエラー] failed to open stream: No such file or directory in~ とか Failed opening required ‘***.php’ とか

以下のようなエラーが出た場合の対処法について。
ロリポップを使っていて、ファイルパスとかすべて正しいハズなのにこのエラーが出る場合。

Warning: require_once(***.php) [function.require-once]: failed to open stream: No such file or directory in /home/users/0/***/web/***/******.php on line **

Fatal error: require_once() [function.require]: Failed opening required ‘***.php’ (include_path=’.:/usr/local/php5.2/php’) in /home/users/0/***/web/***/***.php on line **

おそらく、あなたはサブドメインを使っていると思う(ちがったらこの方法では解決できないかも)。

ロリポップってサブドメインごとにPHPのバージョンやらphp.iniの設定を変更できるのです。
そのバージョンやら設定やらを合わせてやってください。
そうすれば解決すると思う。

具体的な作業は・・・

[ロリポップ!ユーザ専用ページ] →[WEBツール] →[PHP設定]

で行う。]

特にphp.iniの設定を変更する場合には個々の値がどのような動作をするのかよく調べてから変更しよう。
ここらへんの設定を変更するとセキュリティ的にマズイことになるので、よくわからない人はちゃんと調べてから変更しよう。
ってか「わからないからデフォルトでいいよね~」もやめよう。
少なくともここを見ているということはPHPでWEBアプリを運用しようとしているはずで、
WEBアプリを運用するのだったら少なくとも最低限のセキュリティは勉強してから運用をスタートさせよう。

投稿日:
カテゴリー: PHP技術系

なぜcakePHPを使うのか?

143 名前:nobodyさん[sage] 投稿日:2011/07/28(木) 01:45:02.72 ID:???

フリーランスでWEBアプリを開発しています。
PG歴8年で、PHP歴は1年程度です。
フレームワークを使わないPHP開発は一通り経験しているつもりです。

まだcakeを紹介したサイトをいくつか読んだレベルなのですが、
「なぜcakeを使うのか?」がいまいちピンときていません。

開発スピードなら、既成ライブラリや私製ライブラリで十分な成果が出る気がします。
MVCがしたいなら、別にcakeをつかわなくてもできるんじゃ?と思います。
複数PGでの協業にcakeが威力を発揮するとも思えないのです。

みなさんはなぜcakeにかぎらず、PHPフレームワークをつかっているのでしょうか?
みなさんのご経験された案件でcakeなりPHPフレームワークを使うことを決定した理由は
なんなのでしょうか?差し支えなければ教えてください。

145 名前:nobodyさん[sage] 投稿日:2011/07/28(木) 09:25:36.36 ID:???

>>143
デザイナがいなくて画面を自分で作らなければいけない仕事をやってるんで、
scaffoldを吐き出してくれるのが一番助かってるかなあ。
あとはクエリパラメータを関数の引数にマップしてくれるので
どこでどのパラメータを使っているかわかりやすいとか。
フォームヘルパーみたいのも自作しなくてすむし。
ページングも楽だ。

まあ、単体で見るとたいしたことなくても、Railsがフルスタックフレームワーク
と言われていたように、オールインワンでそろってるのが楽なわけよ。

146 名前:nobodyさん[sage] 投稿日:2011/07/28(木) 09:31:09.08 ID:???

>>143
俺は単に「ネット上の情報が一番多い」事が理由だな

cakeに限らない場合、命名規則や開発方法が決められていると、
開発時の迷いが少なくなるというメリットがある。俺にはこれがでかい。

147 名前:nobodyさん[] 投稿日:2011/07/28(木) 09:35:44.21 ID:???

なんとなく使ってる感じですかね、別にこれじゃなくてもなんでもいいです。
あと情報が多いのも理由ですね、ここもそうですが他のプログラマーの意見を
見るのも参考になりいますし。

148 名前:nobodyさん[sage] 投稿日:2011/07/28(木) 10:55:09.01 ID:???

>>143
チーム開発してると合意というか統制がとりやすい。デザインパターンみたいなもん。
保守面でもFWのバグやセキュリティフィックスの作業が軽減できる。
Cake1.x自体は構造が古くてクソだけど。
投稿日:
カテゴリー: PHP技術系

[PHPエラー] Content-type not specified assuming application/x-www-form-urlencoded の対処法

Notice: file_get_contents() [function.file-get-contents]: Content-type not specified assuming application/x-www-form-urlencoded in ******************.php on line ***

とエラーメッセージが出た場合、file_get_contents の第三引数の”context”にヘッダ情報が足りていません。具体的には↓のヘッダを追加しましょう。

“Content-Type: application/x-www-form-urlencoded”,

“Content-Length: “.strlen(http_build_query($POTED_DATA))

ヘッダの追加方法は、↓などを参考にしてください。

とても簡単にPHPからPOSTリクエストを送信する方法【PHP】 – Programming Magic

http://www.programming-magic.com/20080226023511/



追記:

file_get_contents()でPOT送信しても画面遷移はしてくれないんだよなぁ。

だから

echo file_get_contents(~~~);

die();

とせにゃいかん・・・

POSTしつつリダイレクトしてくれる関数はないもんかなぁ・・・




「戻る」ボタン(もしくは history.back() )で前ページで入力していたフォーム内容が消えてしまう問題の対処法

Formでとある内容を次ページにPOSTで送った後に、

「戻る」ボタン、もしくは history.back() で前ページ(入力フォーム画面)に戻ったら、

フォーム内容が消える問題に遭遇。

んで、色々と実験しながら調べていたんだけど、現状だと

  • IE8 => NG
  • FireFox5.0 => NG
  • Chrome12.0 => OK

というな~ぜかChromeだけちゃんと動いてくれている様子。

さてどうしたもんか、と。

submitで前ページに入力内容を戻して~

$_POSTで受け取って~

セキュリティチェックかけて~

htmlspecialcharsでサイニタイズして~

Formに書き出す?

=゚ロ゚)ノ ⌒┫:・’.::ヤッテラレルカァァァァァ!!!!

そんなこと繰り返すからセキュリティホールが増えるんじゃぼけぇ~

(ノ ̄皿 ̄)ノヤッテラレルカァァァァァ!┫:・’.::

そこで、色々調べていたら、

と。

しかし、「session.cache_limiter」を調べてみたら、ブラウザもしくはプロキシサーバにキャッシュ保存可否を伝えるスイッチで、考えなしに「public !!」とはしたくない。

が、しかし、phpではうまいこと抜け道を用意してくれていました!!エライ!!

実はPHPは「session_cache_limiter()」ちゅう便利な関数を用意してくれているので、当該個所にこれを置いてやればおk。

そのページだけキャッシュするようにできます。

ただし、この session_cache_limiter() は session_start() がコールされる前に実行しなければダメ。

まぁ、根本解決ではないけど、これでとりあえずの回避はできるはず。

「これじゃやだ」ってヒトはシコシコと「戻る」処理を書くしかないんじゃないの?

がんばれば?おれはやんねぇけど。




LightBoxライクの画像ギャラリー「piroBox」をWordPressに実装してみた

う~ん

すご~く簡単。

しかもスライドショーとかできちゃって結構イイ感じ。

まず一式をここからダウンロード

以下のファイルを読み込んで(サーバにUPして)、

  • pirobox.min.js
  • style.css(※内部に記載されている画像パスに注意)
  • 画像一式
  • (ひつようであればjQuery本体)
<script type="text/javascript">
$(document).ready(function() {
	$().piroBox({
		my_speed: 400,
		bg_alpha: 0.1,
		slideShow : true,
		slideSpeed : 4,
		close_all : '.piro_close,.piro_overlay'
	});
});
</script>

と書いて(ここらへんのパラメータは本家サイトのドキュメントを適当にみてくれ)、

<a href="images/1.jpg" class="pirobox_gall" title="Spain 2009">
<img src="images/1s.jpg" />
</a>

とimgタグをクラス指定したaタグで囲むだけ。

簡単簡単。

でも

jQueryの1.4.4で動かなかったから注意。

なぜかpiroBoxについてる1.4.2では動くんだよね。

ちなみに俺はwordpressに別途jQuery Ver1.6を読み込ませて使いました。

1.6でも問題なく動いてる(ここで)。