※この文面は、中途半端だったので載せたphp.ini の違いの内容などは全て一旦消しました※
どうせだしバージョン移行を体験してみようと
php-5.3.0 から php-5.3.2 のphp.iniの違いを調べてみた。
私の場合php.ini の元雛形は php.ini-development であったので
php.ini-development の違いについて調べてみた。
比較ソフトにはDF というWindows で動くフリーソフトを用いましたが
他にもソフトは有る様です。
ごめんなさい、ちょっと長い間このネタは中止にします。
理由はまとまってないからです、申し訳ない。
また、Web上の文字コードはUTF-8 になり行く傾向があるようで、
何処やらの使えないPHP の本ではS-JIS なんて教えてくれて
それに従っていたので今更面倒な事が起こったのでこの辺りも含め、
見直さないといけないからです。
とりあえず関係がないですが、J-JIS で作ってしまったPHP のエディターや
統合開発環境 の設定をUTF-8 に見直そうと思います。
色々迷ってきた訳ですが、php.ini がなぜ必要なのか?
という単純なことが前回判った気がしたので、その自分なりの再説明をして、
初心者の私が使いやすい設定と共に、php.ini で初心者が設定しておいた方が良い項目、
これは前回にも書きましたが、概要ではなくて、php の関数との対の表として、その値の種類も明確に
書いてみようと思います。
編集中
------------------------------ PHP-------------------------------------------------------------------------------------------------------
その打ち消すゴミメモ
(古いメモで現在多くでうたわれている、現在のPHP ではUTF-8 を使う事が流れであるのですが、
何かの本に書いてあったシフトJIS の設定が書かれているので注意してください。ただのメモです。)
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
default_charset = "Shift_JIS"
output_handler = "mb_output_handler"
include_path = ".;E:\PHP\php-5.3.0\includes"
doc_root =
extension_dir = "E:/PHP/php-5.3.0/ext"
extension=php_mbstring.dll
extension=php_mysql.dll
mbstring.language = Japanese
x mbstring.internal_encoding = EUC-JP Windows はメモ帳 やパスを含めシフトJIS だった為、文字化けしてしまった!
o mbstring.internal_encoding = SJIS Windows のメモ帳 をANSI で保存するならシフトJISに設定する
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = SJIS,EUC-JP,JIS,UTF-8,ASCII
mbstring.substitute_character = none;
short_open_tag = On 色々なサンプルなどを動かそうとすると、PHPコードの短縮タグを用いて書かれた
物が動かない場合があるので、初心者はOn にしておくべきだ。
docref_root = "/phpmanual/" これはPHPがインストールされている場所ではない!
Web に公開されるディレクトリである。
Apache ならばhtdocs がそのディレクトリになり、
その中にphpmanual が置かれている事を言っている。
docref_ext = .html
date.timezone = "Asia/Tokyo"
!?(非推奨) allow_call_time_pass_reference = On
(推奨) allow_call_time_pass_reference = Off この値をONしないと、関数の引数で値渡しでなく、
参照渡しすると毎回警告が出る。
しかし関数の引数で参照渡しするのはPHP のマニュアルに
「関数コール時に参照で引数を渡すことは、
コードの明解さを損なうために 廃止されています。」とあり、
時期バージョンではこの設定はサポートされない可能性があり、
時期バージョンで常にOFFの可能性があるので、
OFFで使う習慣をつけるべきですが、書籍などのサンプルでは
この設定には触れずONであることが前提のサンプルがあるので、
なぜ警告が出たかわからない場合がある初心者は
気をつけたい所です。
----------------------------------- apache ----------------------------------------------------------------------------------------------
ApacheをインストールしたフォルダのconfフォルダにApacheの設定ファイル[httpd.conf]があります。
以下追加
LoadModule php5_module c:/php/php-5.3.0/php5apache2_2.dll
#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
DirectoryIndex index.html index.htm index.html.var index.php
</IfModule>
方法1か方法2で、この場合は方法2が確実にmod_php5.c なのかどうか不明だった為、
方法1を使った。
方法1-----------------------
c:/php/php-5.3.0
ScriptAlias /php/ "e:/php/php-5.3.0/"
Action application/x-httpd-php php-cgi.exe
<IfModule mime_module> の中に
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
方法2-----------------------
#
# Configuring PHP5/Server-Module
#
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
PHPIniDir "c:/php/php-5.3.0"
</IfModule>
前のブログ(PHPのインストール関連のURL と 疑問 (5/6) ~php.ini の設定をもう一度、集めてみる~)より~
とりあえず今回、色々、とてつもなく色々考えた、
やはり面倒だがサイトの比較から始めよた、その結果沢山ある設定オプションから、
確実に設定すべきか、もしくは触れないといけないであろう物を見つけて、
以下の表 を作ってみた・・・・ だた、できるだけ残したいことを重視したので、表のわりに説明が多く見にくいです。
分類 | 注意 | オプション名(公式マニュアル) | 他サイト | 概要(注意:初心者の考えたメモ書きです) |
---|---|---|---|---|
処理文字形式 | 廃止決定 | magic_quotes_gpc | イ,ロ1,ハ1,ル |
クライアントから送られたGet,POST,Cookieなどで得られた情報の中で、特定の機能を持つ制御文字に対して、その機能をさせない様にする制御文字(エスケープ文字)を付加する。この機能は PHP 5.3.0 で 非推奨となり、PHP 6.0.0 で削除される項目だそうです。 使う場合は<On> とするとエスケープ文字が付加されます、使わない習慣を付けた方がよさそうですし、セキュリティーを保とうとして出来たはずの設定項目ですが、ある事によってセキュリティーが逆に保てなくなる様です。 つまり初心者であるなし関係が無く、設定を<Off>にしてこの自動エスケープ文字の付加を使わない方法を用いる事を覚えるのが良いと思われます。 簡単に言うと、クライアントから送られたgpc(GET、POSTそしてCookie)情報で、マジッククオートをされると困る情報を自動でエスケープ文字を付加されると困るので、PHP 6.0.0 以降では無くすと解釈した方が良さそうで、現状でも使わない方が無難という事だと思います。 しかしいずれにせよ、この機能の実態である関数(addslashes() )は存在したままになると思います。 初心者であってもいつかはクロスサイトスクリプティング対策 は必要であり、Web上で実際に公開する場合には、その対策として自身が作ったスクリプトの中でaddslashes() 関数を使うか、自前の特殊文字を置き換える処理などが必要になるのは決して忘れてはいけない事だと思います。 |
処理文字形式 | 廃止決定 | magic_quotes_runtime | ロ1 | データベースおよびテクストファイルを含む外部ソースから データを返す全ての関数のクオートは、バックスラッシュで エスケープされる様になる様です、magic_quotes_gpc と同様、この機能は PHP 5.3.0 で 非推奨となり、PHP 6.0.0 で削除される項目だそうです。 |
処理文字形式 | 廃止決定 | magic_quotes_sybase | ロ1 | magic_quotes_runtime が有効なときに、この項目も on の場合、シングルクオートは、バックスラッシュの代わりに シングルクオートでエスケープされるそうです。magic_quotes_gpc , magic_quotes_runtime と同様、この機能は PHP 5.3.0 で 非推奨となり、PHP 6.0.0 で削除される項目だそうです。 |
処理文字形式 |
1 2 |
default_charset (値:文字コード種別1つ) |
ハ1,ハ2 |
ブラウザで表示する時にContent-type で文字コードを指定するかどうかの項目です。PHP がたとえブラウザで表示する為の情報を送ったとしても、厳密にソースの文字コードを設定しなければ、文字化けを起こす可能性があるので、その為のソースの文字コードを指定する項目だと思われます。勿論指定しても指定した形式で書いたソースと一致している事が重要だと思います。 そしてまた、この設定は出力に対しての設定であるので、mbstring.http_output と同じ文字コードを選ぶべきだと思います。 |
処理文字形式 | 〇 | output_handler | ハ2 |
出力する文字列の文字コードを入力とは違う文字コードにエンコードする必要がある場合に用います。具体的には、スクリプト処理の出力を、文字コードの変換に用いる関数に出力(渡す)するかどうかを定義します。 きっと内部文字エンコーディング(mbstring.internal_encoding)と、HTTP出力文字エンコーディング変換(mbstring.http_output)が違う時には確実に設定が必要です。 変換関数はバッファー内部で処理する物が多い?らしいので、出力バッファリング(output_buffering)も設定が必要になる雰囲気に、私的は感じました。 |
パス | 廃止 | output_buffering(PHP 4.3.5 以降設定が無い様です) | ロ2,ハ1 | このディレクティブを 'On' と設定することにより、全てのファイルに 関して出力バッファリングを有効にすることができたそうです、現在は文献だけが公式に残り、php.ini の中では言葉すら存在しない様です。 |
パス | include_path | ロ2,ハ1 |
PHP のファイル操作に関わる幾種かの関数は、このパスを基点に相対的に行なわれます。複数選択する場合には、;(セミコロン)で区切ります、pearやSmartyなどを使う場合には複数選択したりパスを変更する必要があると思います。 基本的にPHPのインストールパスにある、includes フォルダを選ぶ様ですが、PHP をインストールしたフォルダには見つからないと思いました、つまり任意で自身がインクルードするファイルが置いてあるフォルダを示せば良いので、名前も任意で構わない様です。 ですが、まぁしかし、そのフォルダを使う事を想定して、自身がPHP をインストールしたパスにincludes を足した物が多くの書籍やWeb上で見受けられました、初心者が思いつかないならば名前はとりあえずincludes で良いのではないでしょうか。また公式ページにはインクルードのたびに毎回 PHP にカレントディレクトリをチェックさせるよりは、 明示的に include './file' を指定したほうが効率的だとも書いてあります、しかしセキュリティーを考えるとある程度以上に柔軟に指定できるのもまずい気がすると思いました。要するにPHPの一部関数が使える場所を定義する為の設定です。 |
|
パス | △ | doc_root | 公式1,ハ1 |
Apache などのWebサーバのモジュールとして動作させる場合、なんらかのエラーや不都合でPHP スクリプトが処理されず、PHP ソースや機密な情報などをそのまま表示される状況を好まない場合には、この設定が必要です。つまりそのままWeb公開可能なドキュメントと切り分けて情報の漏洩などを防ぐ方法の一つだと思います。 単純にApache と一緒に使う場合に、Apache の公開ディレクトリである、DocumentRoot を設定する場合も見受けられますが、Apache を動かす為ではなく、phpのスクリプトが動く為や、機密情報漏洩を防ぐ事を重視して、一般論よりも自身の使い易さやルールに則って設定するべき項目だと思いました。ただし、初心者が外部に公開しない勉強用ならばDocumentRoot を指定していても良い気がしました。 この値は空で無 い場合のみ使用されます。要するにphp のスクリプトを覗かれて困る場合に、公開できるドキュメントとは別に、この設定が必要だと思います。 |
パス | extension_dir | 公式2,イ,ロ3,ハ1 |
動的にロード可能な拡張モジュールを置くディレクトリを 指定します。PHP は組み込まれた状態でコンパイルによって無効に出来ない「組み込みモジュール」と、指定して実行時に読み込み可能な「動的モジュール」がある様です。この設定はその動的モジュールを置くディレクトリを設定します。 厳密にここで言う拡張モジュールとは、PHP では3種類の拡張方法、バンドルされているDLLと、バンドルされていないDLLのPECL 、DLLではなくて、phpスクリプトで書かれているライブラリのPEARがあり、この設定は、バンドルされているDLLとバンドルされていないDLLについての読み込み設定です。補足として言い換えるならば、DLLによって読み込む、コンパイルによって埋め込まれていないこの2種は、動的にロード可能な「動的モジュール」です。 |
|
パス | extension | 公式3,(イ),ロ4,ハ1 |
動的にロード可能な拡張モジュールを起動時に読み込む為の設定です。スクリプト の中でdll() 関数を用いて読み込む事も可能な様です。PHP4にはextensions フォルダ、PHP5 にはext が読み込むバンドルされているモジュールが入っているフォルダになると思います。 ●PHP を学習する上で、マルチバイトを用いると思うので、初心者の私は、[ extension=php_mbstring.dll ]を有効にし、マルチバイトを使える様にします。多分ですが日本人でS-JIS(シフトーJIS)を使うならば有効にしないといけない気がします、なぜならmbstring.language の説明に、日本語の文字は、マルチバイトエンコーディングを使用しないと表せませんとあり、またインストール手順 にも同様な言い回しがあるからです。また、php.ini 内の設定項目のmbstring.xxxxx はマルチバイト文字列 関数 についての設定で、この[ extension=php_mbstring.dll ] をインストールした時に必要な物がほとんどです。 ●私はWAMP 環境を作り、PHP からMySQL を操作することを覚えるつもりなので、MySQL を有効にする為に、[ extension=php_mysql.dll ]を有効ににし、MySQL を使える様にします。 |
|
処理文字形式 | △ | mbstring.language | ロ4,ハ1,ハ2 |
公式ページに日本語の文字は、マルチバイトエンコーディングを使用しないと表せません とある事や、 カナを("全角かな"、"半角かな"等に)変換 することに特化した関数も日本語やマルチバイトを意識したものが多く感じられました。詳細を調べると、mbstring 拡張モジュールは 日本語のほかに中国語 (簡体字)・中国語 (繁体字)・ 韓国語・ロシア語 もサポートするみたいです。mbstring.xxxxx とある設定は1つだけが正確であっても、他が環境にあっていない場合は何処かで文字化けを起こしたり、正常に処理されない可能性があります。エディタで書いたスクリプトを保存する時の文字コードや、ブラウザが解釈する文字コード、php 内部や出力時でのエンコードなどを、自分の環境や、結果をブラウザで見る場合の環境まで考慮に入れる必要があるのだと思います。また、余談ですが、ブラウザがファイルが拡張子をどう判断し処理するかのContent-type (default_charset)も結局考慮に入れることになると思います。 UNICODE の様な、多国の言語を1つの文字エンコーディングで表現しようとした文字コードを用いない場合には、特に重要な設定となり、間違うと文字化けやエラーの原因となる予想がつきます。 |
処理文字形式 | 〇 | mbstring.internal_encoding | ロ4,ハ1,ハ2,(ニ),(ホ),ヌ |
内部エンコードの文字エンコーディングの種類を選びます。正常にphpスクリプト を動かすには、文字コード種類 の解釈は厳密に関わってます、内部エンコーディングに変換されるのは、クリエの入力(mbstring.http_input で変換するかどうか決まります)、内部処理(この設定mbstring.internal_encoding でエンコーディングを指定し、mbstring.encoding_translation で使う使わないを決めます)、出力(mbstring.http_output で出力時に変換する文字エンコーディングを指定できます) 、この3つの文字エンコーディングが存在していて、一部でも間違った文字コードを使った処理をすると文字化けが発生するのだと想定します。 厳密には、auto 設定であると、入力のソースの文字エンコーディング と、解釈する文字エンコーディング の違いでエスケープコード なども出来てしまう事も考えられ、auto 設定はソースの保存形式が一緒であっても、確実に毎回同じ文字コード と認識しない場合もある考えすら予想できます。但しやはり、入力先が限定できない場合などは、話しが変わってくると思いますし、判定する為の関数が、出力ではなく入力に対して変換する関数があるのかは判りませんし、何度も文字コードを変換する事への弊害も考えられます、初心者なので、まず動かす為の設定を考えると単純にソースのスクリプトの文字エンコーディングであるmbstring.http_input に合わせ、同じにしておけば良いとおもいます。 ちょっと難しい余談ですが入力、内部、出力などという表現がマルチバイト(mbstring) の説明に見受けられると思います、これはPHP が処理するときに、バイト列やバイト配列をどのエンコードを使用して文字として認識しているかのことで重要になると思います、想像がつかないかもしれませんが、文字列はエンコードをしなければ、元はただのバイト列やバイト配列なのです。 PHP を使ってスクリプト を書いている私たちユーザー側 には、どんな規定で日本語や、中国語や韓国語などの他の国との違いを認識しているのかなどは設定以上には知る余地がなく、また知る余地がなくとも使えることが便利であるから、こういった設計になっていて、私たちユーザーにはたまに出てくる作り手側の表現、この場合は内部、外部などという事は、エンコードをして単なるバイトである数値を文字に見える状態にしている仕組みを伝えているに過ぎないことに注意する必要があると思います。 入力されたある文字コードで書かれたただのバイトの塊を、どんな意味の文字なのか判ることなく処理することは不可能です、それを手動で指定したり、場合によってはエンコード種別を自動で見分けられたりする場合もあるでしょうし、エンコードして文字エンコードを変えるべき所をあえて変えたくない場合などもユーザーから見た場合には存在するでしょうから、PHP の文字エンコード の仕組みを作った人も、その仕組みの中で設定できる部分と出来ない部分を考えた上で、このmbstring.xxxxx の設定を設けたのだと思います。 こういった文字エンコードについては、他の言語でもほぼ一緒の仕組みであり、もしそこまで厳密な解釈や、厳密な文字の解釈をしたいのならば、自身でエンコーダーを作ることになるのだと思います。 そのうち自身の能力が向上してきたころに、部分的に既存な文字エンコード処理を用いていて、仕様では不満な部分は、どうかして乗り越えたくなるのは、多くの人が思うことなのかもしれません。 ですが、一見このわかり難いほどの細やかな設定は、わかり易さはさておき、なんらかの融通や、なんらかの困りごとに手が届くことに考慮して、on、off、auto、pass、文字列で指定、などと選べるのでしょうし、その個々の組み合わせでだいたい何かが解決することが伺わせられる気がします。 |
処理文字形式 | mbstring.http_input | ロ4,ハ1,ハ2 |
HTTP入力文字エンコーディングを内部エンコーディングに自動で変換するかを設定します。スクリプトではhttp_inputの設定は変更できない様です。 ここで間違えやすいのは、mbstring.internal_encoding はPHPスクリプト を解釈するときの文字エンコーディング を指し示し、このmbstring.http_input は、クライアントから送られたGet,POST,Cookieなどで得られたクリエ情報ではないことです、クリエ情報に対しての設定は、mbstring.encoding_translation で行うことに注意が必要です。 |
|
処理文字形式 | mbstring.http_output | ロ4,ハ1,ハ2,(ヘ) | 最終的に処理結果を何かに出力する訳ですが、その出力を保存する時の文字コードの種別を指定します。但し保存した形式を開く場合に、やはり違う形式を指定すると文字化けになると思います、例えばブラウザで見た場合にHTML が文字化けする様に、保存形式以外にブラウザがそのファイルの文字コードをどの種類で解釈するかなどや、Content-type (default_charset)などの設定も必要になるのかもしれませんが、とりあえず初心者なのでこの辺が関係するかもしれないので覚えとして記述しておきました。 | |
処理文字形式 | mbstring.encoding_translation | ロ4,ハ1,ハ2,(ト) |
この設定は、mbstring.internal_encoding の文字コードに変換するときに文字エンコーディングへの変換を有効にするかの設定です。 クリエの要求ではなく、スクリプト自体の設定は、mbstring.http_input が受け持っている様なので注意が必要です。 mbstring.http_input と、このmbstring.encoding_translation の違いを理解していないと、色々な面で文字化けの原因です。 初心者は、とにかく自身の書いたスクリプトを動かす為の設定を必要とするので、この設定をon にしておき、mbstring.internal_encoding の設定が内部エンコーディングになることを意識しておけば問題がない気がします。 公式サイトには「入力される HTTP クエリに関して、 文字エンコーディング検出および内部文字エンコーディングへの変換を行う 透過的な文字エンコーディングフィルタを有効にします。」とあり、抽象的で曖昧なのですが、検出とある訳なので、mbstring.internal_encoding に従って文字エンコードを行うことが出来ることを指していて、mbstring.internal_encoding に間違った物を指定すると検出も間違い変換も失敗するのだと思います。 |
|
処理文字形式 | mbstring.detect_order | ロ4,ハ1,ハ2 |
文字コードを判定する時に、どの順番で文字コードであるか調べる為の設定です。文字コードを判定するときに、auto を指定するとどの順番で検査しているか判らず、コードによっては一部が同じであったりして間違う場合があるでしょうから、クセを把握して、順番を指定しておいた方が良い様です。 私が考える分に、文字エンコードするときに文字を判断するとしても、文字コードは規格ごとにまったく違う場合と重なる場合があるので、できたら重なる場合でありえない順番を知っているなら、そのありえない順番から調べる方が良いですが、それが判らないならば、入力されるスクリプトソースや、入力されるクリエの文字エンコード形式、内部処理形式、その次に1バイトでない、比較的に長い形式の文字コード、最後に短いバイト数の文字コードといった順番で設定することが浮かびました。 |
|
処理文字形式 | mbstring.substitute_character | (ロ4),ハ1,ハ2,(チ) |
無効な文字を出力するかどうかの設定です。 入力文字エンコーディングが無効、 または出力文字エンコーディングに文字コードが存在しない場合の代替文字を指定できます、例えばnone; とすると出力しない事を選択できます、他の関数にも影響するので公式ページ をチェックすると良いかもしれません。 マルチバイト文字列 関数のmb_ substitute_ character と同じ設定内容かもしれません。 |
|
エラー表示 | docref_root | リ |
エラーが発生したときに、エラーやエラーの原因となった関数に関するマニュアル のページの情報をエラー情報に載せる。 はじめ初心者の私はPHP がインストールされているディレクトリ かと一瞬考えましたがやはり違う様です、つまりこの場合にはWeb サーバーが動いているディレクトリ、私の場合はApache であったので、Apache の設定ファイルhttpd.conf 内の[DocumentRoot] が指し示す場所にマニュアルがある事を意味しています。 |
|
エラー表示 | docref_ext | リ | docref_root のマニュアルの拡張子を表します。docref_extの値はドット "." で始まる必要があります。 | |
エラー表示 | 〇 | allow_call_time_pass_reference | 関数の引数に値渡しではなく参照渡しをした場合に警告を出すかの設定です。この設定がONであると、関数がONであると関数の引数に参照渡しを用いると警告が表示されます。今後のバージョンではこの設定はなくなり、OFFで固定される様です、コードの明解さを損なうためとあります。初心者は書籍などのサンプルコードを実行中に何か警告が出る場合があり、「you can set allow_call_time_pass_reference to true in your INI file in ... 」などと出た場合はこの設定がONであるからです。 |
先にお断りをしておきます。
今回は修正を重ねた為にとても長くブログじゃない!です読み物ですw
ひたすら長くて読みにくかったり、部分的に雰囲気が違うのは、
修正をした日の気分が入っているからです。
宜しくです<_ _>
前回(~インストール後の設定を模索~)で
ファイルを展開後にPHP を動かすまでに何が必要か
調べたのだが、やり方は幾種かあり、その中で
php.ini と aphche の設定で指定する設定方法を選んだ。
そこで今回はphp.ini の設定を
ある程度調べてみた。
まず最終結論から、リファレンスとも言うべきサイト
PHP: コア php.ini ディレクティブに関する説明 - Manual
に、全て設定は載っているのを見つけたのだが、
初心者が単純明快にただひとつPHP を動かすだけの設定をしたいのだが、
沢山ありすぎると手に負えないので、他のサイトや持っている本から比較したりして
単純にまず動かすとしたら何をどうしているのかを模索してみる。
まず、私がPHP をインストールと設定をする上で
案外気に入ったサイト である、php.iniの設定 - PHPインストールと初期設定 から調べてみた。
すると以下の設定について述べている。
extension_dir (拡張モジュールのディレクトリ)
include_path (インクルードパスの設定)
mbstring (日本語などマルチバイト文字を利用の為の設定)
magic_quotes (マジッククオートでエスケープするかの設定)
あと最後にPHP のApache モジュールとしての動作確認
でした。
ここで マジックオート(magic_quotes)のエスケープするかの設定とか
全くなんの意味なのかさっぱり判らなかったので調べました。
まずPHP公式 の日本語化マニュアルのサイトに、
マジッククオート についての説明があり、驚くことに、いきなり目立つ様に
警告
この機能は PHP 5.3.0 で 非推奨となり、PHP 6.0.0 で削除されます。
この機能を使用しないことを強く推奨します。
とありました。
とりあえずこの先に削除されることが決まっているのならば、
単純に使わない設定で良い気もしますが、
知識として今後も必要そうな話なので、
マジックオート と、エスケープ文字は何かについて、
調べてみました。
余話(すご~く雑談ですが、調べてる最中に思うことを書いてみました。宜しければどうぞ)
また、このマジッククオートは、入力する者があえて制御文字を送った場合に
PHP が解釈してその送られた情報で何か処理をしない様にする為の物でもあります。
しかし次期バージョンでは、この項目は無くなる様ですし、変わりの方法があるのかなどは、
私はまだ入門前というか、入門したばかりなので判りません。
そのうち見つけたら、このページにリンクでも貼っておこうと思います。
追伸:(かなり長い時間がたってから)
まぁ色々飲み込めなくてマジッククオート (magic Quote)について悩んでいたのですが、
単純に文字列をエスケープ(のがれる⇒無効化)する様な事で良いのだと思います。
そして、公式マニュアル にもある程度意味が書かれています、
やっとですが、今読めば意味が理解できる段階にきました。
結局ですが漏れがなくphp.ini の内部を編集して設定したいだけなのです。
私が色々なサイトにある違いをしっかり把握し様としているのは、
万全な状態で毎回何かに突き当たる度に困らなくて良い状態にしたいからです。
今度は内部の変更項目や、追加項目を全ての設定を調べ出してみようと思っていましたが、
php.ini-production と、php.ini-development が元のファイルの雛形ですが、
php-5.3.0 のphp.ini-production で1895行、php.ini-development で1887行ありました。
そうすると私の様な初心者が全て調べ様と思った場合に、
見知らぬ用語が出てきて、それについても知るために調べなくてはいけなかったり
翻訳しないといけない事になるので、それを考えると、今はまず動いてほしい気持があるので
そのうちにでも、「php.ini の翻訳と2種の雛型比較と、それぞれの設定の意味」とでも題して
把握してみようと思います。
さてそうすると万全な状態とかでは無くなりますが、
とりあえず出来るだけ多くのサンプルをサイトから探して、
それぞれ何をしてるのかを展開しようと思います。
話はまた戻っている部分がありますが、
戻ったのも経緯があり、その手順で進んだ方が良いと
理解があってからこそも戻ったので、長すぎたのと
覚える量が多かったと理解して進めたいと思います。
とか! 思っていましたが、意気込みは裏腹に、
時間を置いてみたり、ネットで再検索をしていると
色々なことが判ったので、php.ini の設定を2種類に分けて
模索する方向へと変えました。
これはやる気がなくなったとかではなくて、
色々身に付けた証拠だと思っています。(当たって砕けすぎでも負けません!w)
また、やはりphp.ini に書いてあることを自分なりに翻訳してみたいと思っています。
(ちょっとだけ翻訳しましたが、php.ini には目次みたいな物は無い様です^^;)
(追伸:またまたちょっと調べたのですが、php.ini 内部に『Quick Reference』という部分があって、
; Development Value: Off
; Production Value: Off
とかそうやって各項目の Development と Production の初期設定について
簡易的に違いが載せてあるので、
ぶっちゃけ私が調べなくても『Quick Reference』ココを見ればわかるかもしれません。
ただ、片方のini にあって片方にない行についてまでや、書かれていない設定まで
書いてあるのかまではまだ見ていません。これもそのうち確認したいです。
さて前回(~ダウンロードとインストール~)の続きで、
ファイルやらフォルダを展開するところで出た
複数のインストールの仕方を書きましたが、
今度はその続きで、PHP やApache の挙動を設定する
ファイルについてメモします。
多くのサイトでは、
php.ini の設定の雛型は、
php.ini-recommended
php.ini-dist
がzip展開後にあると書いていますが、
私のダウンロードした、
php-5.3.0-Win32-VC9-x86.zip もしくは、php-5.3.0-Win32-VC9-x86.zip
には、その両者はなく、
php.ini-production
php.ini-development
というファイルしかありませんでした。
なので中を開き[production]や[development] で
文字列の検索をしてみると、始めの方に
;;;;;;;;;;;;;;;;;;;
; About this file ;
;;;;;;;;;;;;;;;;;;;
という所が見つかり、そこに
; php.ini-production contains settings which hold security, performance and
; best practices at its core. But please be aware, these settings may break
; compatibility with older or less security conscience applications. We
; recommending using the production ini in production and testing environments.
; php.ini-development is very similar to its production variant, except it's
; much more verbose when it comes to errors. We recommending using the
; development version only in development environments as errors shown to
; application users can inadvertently leak otherwise secure information.
という説明が書いてありました。
これによるとどうも、
php.ini-production は、パフォーマンスが良いが、連携する他の事柄、状況までは把握しない設定
php.ini-development は、説明が多いが、エラーの確認がしやすい設定
の様です。
追伸ですが、
PHP マニュアル翻訳プロジェクト に、INIファイル の扱いに関する変更 という記述を見つけました。
それによると、
標準の php.ini ファイルは再び整理され、名前が変更されました。
php.ini-development ファイルには開発環境で推奨される設定があります。
php.ini-production は本番環境向けに設定されています。
だそうです。
次回(PHPのインストール関連のURL と 疑問 (4/6) ~php.ini の内容をしらべてみる~)に続く