値:2048 定数: |
E_STRICT ( integer ) |
PHPエディタ(php_editor と、php_editor_std) なるものと、Notepad++ EUC-JP 対応版 なるものを、
当初からPHP エディタのターゲット として使おうとしてきた。
結局なんだか普通にエディタっぽいNotepad++ EUC-JP 対応版 を使ってきたのだが、
PHPエディタ の通常版がプロジェクト単位で使えるのもあり、そのうちこちらにした方が良いかな?
とか思いつつ、通常版は拡張子の関連付けからなんだかややこしく、プロジェクトに参加させないファイルは
開くことが出来ない気配・・・
なので一度は簡易版みたいなスタンドあローン版があり、こちらはファイルだけを開けるので
学習用には楽だが、なんだか両方使わないといけないっていう気配に陥りそうで、ぶっちゃけややこしい・・・
Windows に拡張子の関連付けを行うと、それぞれかぶらない様に設定されてしまうのがわかったので、
この際通常のプロジェクト単位のバージョンの方に.php なども設定しなおしてみて開いてみると、
「作成するファイル名を指定してください」 と出て、その拡張子に関連付けしたファイル名は表示されるが
そのプロジェクトに参加させてみると、ファイルは中身が「空」の物、つまり新規になってしまう。
この都合の悪さは痛い^^;
プロジェクト単位でしか作業をしなくても、ファイル単位で使えない→通常版
プロジェクトで作業出来ないが結構いけるのかな?って思った→スタンドアローン版
で結局前もこのPHPエディタなる物はphp.exe でエラーチェック が出来るとかchmコンパイルされた
PHP マニュアルが見れる(これはエラーの詳細でジャンプできないから便利でない)とかも使えるので
使おうと思って、度々この通常かスタンドアローンか迷い、Notepad++ EUC-JP 対応版 を使ってる
始末なのだった・・・・・
それで長くなるが今回やっとまた、PHP エディタを使おうと思い、PHP のテストなどでお決まりの
雛形があるので、その雛形を私は雛形.php って名前でつけてるのだが、これをスタンドアローンで
開いて拡張子に驚きました・・・
その拡張子の問題について述べます。まずはそのファイルの内容です。
--------------------
<html>
<head><title></title></head>
<body>
<?php
?>
</body>
</html>
--------------------
たったこれだけ、これだけがどうもマズイみたいなのです^^;;;
これをメモ帳で開き、名前を付けて保存にすると、文字コード は「ANSI」なのです。
でもこれを、PHPエディタ のスタンドアローン版で開くと、何度 Shift-JIS で保存しても、
再度開くと「UTF-8」なのです^^;
でもなぜか、こっちのコードの例だと、Shift-JIS として認識してくれます^^;
--------------------
<html>
<head><title></title></head>
<body>
<?php
//テスト
?>
</body>
</html>
--------------------
開く時にどっちかわからないなら、Shift-JIS を選ぶかUTF-8 を選ぶか選択する様な設定が無いです><;
このPHPエディタスタンドアローン版(Ver.1.33)は、ぶっちゃけ気が付かないと、初心者は文字コード で
ハマるかもしれません。。。
後で分かったのですが、これはNotepad++ EUC-JP 対応版 でも同様な状況な様です!!!
なぜ気が付かなかったのかは、Notepad++ EUC-JP 対応版 の場合は、
複数同時に沢山のファイルが開けて、そのままNotepad++ EUC-JP 対応版 本体を閉じて終了しても、
次開くと、指定したファイル を閉じてない限り、セーブしてもまた開きます。
つまり、形式変換してセーブして閉じなければ、またShift-JIS から使えて、
設定が残るのです。
個人的には便利に思えました、しかしこれもShift-JIS 優先とかの設定があればいいですね^^;
とりあえず、なんだか、色々エディターの問題でつまずいて、
私は、PHP エディターなる物のデフォルトがUTF-8形式であると誤解していて
これがPHP でデフォルトで扱うと便利なのかな? とか思っていましたが、
他のエディタ、Notepad++ EUC-JP 対応版 でも同様なので、これは多分デフォルトではないと
思えました。
とりあえずは、凄い慣れない疑問でしたが、なんとなく普通は
「日本語が混ざっていないANSI は、UTF-8 であり、日本語が混ざるとANSI であってもそれは、
S-JIS(Shift-JIS)である?!ことを薄々理解しました、多分それであってるのかな???????
また言い換えると、普通にメモ帳では ANSI という取り扱いしかないのに対し、
PHP エディタ や、Notepad++ EUC-JP で自動的にファイルを開いた時に認識する文字コードが違う事も
判り、あぁそういえば、PHP の設定ではAuto とか設定があるから、これがバグの原因になるのも
よく似た事なのか!と実感しましたorz
Directive | Local Value | Master Value |
---|---|---|
mbstring.detect_order | SJIS,EUC-JP,JIS,UTF-8,ASCII | SJIS,EUC-JP,JIS,UTF-8,ASCII |
mbstring.encoding_translation | Off | Off |
mbstring.func_overload | 0 | 0 |
mbstring.http_input | auto | auto |
mbstring.http_output | SJIS | SJIS |
mbstring.http_output_conv_mimetypes | ^(text/|application/xhtml\+xml) | ^(text/|application/xhtml\+xml) |
mbstring.internal_encoding | SJIS | SJIS |
mbstring.language | Japanese | Japanese |
mbstring.strict_detection | Off | Off |
mbstring.substitute_character | no value | no value |
Directive | Local Value | Master Value |
---|---|---|
mbstring.detect_order | no value | no value |
mbstring.encoding_translation | Off | Off |
mbstring.func_overload | 0 | 0 |
mbstring.http_input | pass | pass |
mbstring.http_output | pass | pass |
mbstring.http_output_conv_mimetypes | ^(text/|application/xhtml\+xml) | ^(text/|application/xhtml\+xml) |
mbstring.internal_encoding | no value | no value |
mbstring.language | neutral | neutral |
mbstring.strict_detection | Off | Off |
mbstring.substitute_character | no value | no value |
前回の私のサイトで、PHP のコンパイラのバージョン、つまりVisual C++ のコンパイラの違いで
PHP の本体プログラミングが収められている圧縮ファイルやインストーラーが違うのでは?と思い、
それでも何かApache の.httpd ファイルの設定をいじってみたり、PHP.ini の設定をいじってみたりして、
途方に暮れていました。
そして、圧縮形式やインストール形式、名前の違うPHP ファイルを手当たり次第解答したり、
そして判ったのです・・・・
結論:
PHP は、VC++ のコンパイラのバージョンでWebサーバ環境を分けてしまっている!
(5.3.2のみなのか、以降ずっとなのか不明)
つまり、IIS を使うならVC9、Apache 使うならVC6 みたいです(前回の私のサイトを見た方が早い)。
これ正直・・・ コンパイラ の設定とかプリプロセッサをよく知ってるなら、
VC++ の6や9のバージョン違いを把握して、こんな分け方しないで、
Apache 用でVC6 とVC9 でコンパイル 出来るとか、
IIS用でVC6 とVC9 でコンパイルできるとかしないのかな?とか。
もしくはApahce 用であっても、VC6 コンパイラバージョン、VC9 コンパイラバージョンという分け方、
同様にIIS 用でVC6 コンパイラバージョン、VC9 コンパイラバージョンという分け方をしたら、
こんな変な所でつまずかない気がしたorz
あと、結果的に現状で、IIS 用のDLL とかApache 用のDLL とかがインストーラーの違い(コンパイラの違い)
によって違うの部分があるならパッケージ内容を何処かに詳細な記載をするべきだと思った。
また、Thread Safe 版と、Non Thread Safe 版でも使えるWebサーバ とかCGI とか用途が違い
パッケージが違うみたいです。
Webサーバの選択でIIS かApache とかの環境ごとにダウンロード した方が、
VC バージョン表記で分類するダウンロード の方が、使う側はとても楽なのにと思った。
コンパイラのバージョン で分けるのは開発している人の都合であっても?使う側の都合じゃないよ?!
そう分けてるって思うのは私だけなのだろうか?
まぁなんらかの理由で現状続いているやり方なので、そのやり方を理解するしかないが、
少し簡潔なやり方ではないと思えた。
こんな事を話していても始まらないので終わりにしようと思うorz
次回は実際にPHP のインストールパッケージ(Windows のzip 版) の
ファイルの比較とファイルの用途の解明をしてみようと思います。
次回に続く
追伸:
この記事は古くなっています!
この後の続きを書きました。
追伸:
上記の記事は古くなった!!!
追記の内容は
Apache とPHP のバージョンについて(2014年3月31日)
に書きました。
なんだかPHP と Apache をインストールしたのだが動かないのが
前回(っていうか今日はブログ一日で何回書いているんだw)なんだが、
まぁとりあえず他人のブログなどを拝見させてもらいながら進めようかなと
Webを冒険してた訳なのですが、やっぱりダウンロードページをもう一度みて
他のバージョンとの違いをもう一度確認してみようかなと思って見て来ました。
そこで横に書いてある得体も知れない何かを伝えている英語が気になりました・・・・
IIS はVC9? PHP はVC6? え!? どう言う事なんだ???!!!
英語読めない私でも何かピンとキターーーーー!
つまり、VCコンパイラのバージョンによってApache かIIS のどちらに使うかの
推奨?推薦?バージョンが決まっているって事?!
とりあえず怪しいので、適当でも良いのでPHP のダウンロードサイトの
右にある英文を適当に訳してみた。
If you are using PHP with Apache 1 or Apache2 from apache.org you need to use the VC6 versions of PHP
(あなたは、apache.orgからApache 1またはApache2のPHPを使用している場合 PHPのVC6にバージョンを使用する必要があります)
If you are using PHP with IIS you should use the VC9 versions of PHP
(あなたがIIS上でPHPを使用する場合PHPのVC9バージョンを使用してください)
VC6 Versions are compiled with the legacy Visual Studio 6 compiler
(VC6にバージョンは、従来のVisual Studio 6コンパイラでコンパイルされています)
VC9 Versions are compiled with the Visual Studio 2008 compiler and have improvements in performance and stability.
(VC9のバージョンは、Visual Studio 2008のコンパイラでコンパイルされ、パフォーマンスと安定性の改善があります。)
The VC9 versions require you to have the Microsoft 2008 C++ Runtime (x86) or the Microsoft 2008 C++ Runtime (x64) installed
(VC9のバージョンをお持ちならばマイクロソフト2008 C + +のランタイム(x86)またはマイクロソフト2008 C + +のランタイム(x64)をインストールする必要があります)
Do NOT use VC9 version with apache.org binaries
(apache.org バイナリでVC9バージョン を使わないでください)
っていうかw 今日リアル寒すぎるので^^; また後で編集します・・・・w
後日ですが、翻訳完了しておきましたw
※このVCコンパイラ によってPHP のWebサーバ が違うのは、
5.3.2のみなのか、以降ずっとなのか不明でした。
次回のブログに続く
追伸:
上記の記事は古くなった!!!