2

私は奇妙な問題を抱えています。Googleには何も出てこないので奇妙です。HTTPステータスコードStatusCodes.iniでいっぱいのiniファイルを解析しようとしています。共有ホスト(Hostmonster.com)のローカル(WAMP)と、CentOS w / CPanel/WHMを実行している専用マシンの3つの異なる環境でテストしました。最初の2つの環境は正常に機能しているようですが、専用マシンでは次の警告が表示されます。

警告:構文エラー、8行目のStatusCodes.iniに予期しないTC_CONSTANTがあります

実行時:

$ini = parse_ini_file('StatusCodes.ini',true);
$codes = $ini['codes'];

iniファイルは次のようになります。

[コード]
100=続行
101=プロトコルの切り替え
200 = OK
201=作成済み
202=承認済み
203=信頼できない情報
204=コンテンツなし
205=コンテンツをリセット
206=部分的なコンテンツ
300=複数の選択肢
301=恒久的に移動
302=見つかりました
303=その他を参照
304=変更されていません
305=プロキシを使用
307=一時的なリダイレクト
400=不正なリクエスト
..。

カウントしたくない場合は、204 =コンテンツなし、8行目です。行を削除しましたが、何も変更されていません。助言がありますか?

4

2 に答える 2

9

ご指摘のとおり、問題は行にあり204 = No Contentます。

これは、No(他のファイルとともに)INI ファイル内の特別な値である ためです。INI パーサーはこの行に到達Noし、キーの値を読み取り、エラーを生成する204末尾の<space>Contentテキストを見つけます。

PHP のマニュアル ノート (例: のページparse_ini_file):

null、結果は、no結果はです。false""yestrue"1"

簡単な解決策は、すべての値を二重引用符で囲むか、または INI キーワードで始まる値のみを次のように囲むことです。

[codes]
100 = "Continue"
101 = "Switching Protocols"
200 = "OK"
201 = "Created"
202 = "Accepted"
于 2010-10-30T17:51:52.517 に答える
3

残念ながら、parse_ini_file()それが受け入れるものは少し狭いです。

ini ファイルの値に英数字以外の文字が含まれている場合は、二重引用符 (") で囲む必要があります。

また、これがおそらくエラー メッセージの理由です。純粋な数値をキーとして使用できないことは確かです。したがって、間違いなくあなたの価値観を引用してください:

[codes]
100 = "Continue"
101 = "Switching Protocols"
200 = "OK"
...

必要に応じて、キーにプレフィックスを付けます。

[codes]
c_100 = "Continue"
c_101 = "Switching Protocols"
c_200 = "OK"

これらのいずれかで問題を解決する必要があります。

于 2010-10-30T17:40:19.890 に答える