2011-12-22 7 views
-1

何が問題なのか分かりませんが、以下のこの単純なPHPでは解析エラーが発生しています。私はheader('HTTP/1.1 200 OK');ためheader('HTTP/1.1 404 Not Found');を交換するときPHPでヘッダをHTTPステータスに設定する際の解析エラー

私はこのコード

<?php 
header('HTTP/1.1 404 Not Found');  
header('Content-type: application/json'); 

$data = 'testing dgdg dfgdf gdf';// my code that returns the appropriate data; 

echo json_encode($data); 

?> 

にこのエラー

Parse error: syntax error, unexpected T_STRING in E:\Server\htdocs\myframework\library\api\rest-test\index.php on line 3 

を取得しています。しかし、エラーが表示されなくなります。これを理解するのを手伝ってください。私の元のコードはheader('HTTP/1.1 404 Not Found');行の末尾に空白があった

決議


XAMPP

でWindows上でのテスト、そのスペースを削除し、今すべてが期待どおりに動作します。

+0

私はあなたのエラーを取得しません。私はWindowsとLinux上であなたのコードをtetsted。どちらのテストもエラーなく正常に動作しました。 – arminb

+0

エコーなしでヘッダーを送信しようとするとどうなりますか? ***ヘッダー( "状態:404が見つかりません")を試してみたらどうでしょうか?***?どのPHPバージョンを使用していますか? – Alfabravo

+0

PHP 5.3.6を使用すると、私はFastCGIを使用している可能性があり、 'header(" Status:404 Not Found ");が動作しているように見えませんでした。ちょうど私が元のヘッダーで404から200をどのように変更するのかちょっと奇妙な方法 – JasonDavis

答えて

2

最初にheader('HTTP/1.1 404 Not Found');の代わりにheader($_SERVER["SERVER_PROTOCOL"] . " 404 Not Found");を使用することを検討してください。基本サーバーが異なるHTTPプロトコルを使用している可能性があり、後で更新する必要がないからです。

第2に、このセクションに追加しているコンテンツヘッダーに問題があると思われます。 header('Content-type: application/json');を削除して問題が解決するかどうかを確認してください。

+0

最終的に私は削除しようとしました'ヘッダ( 'HTTP/1.1 404 Not Found');'行を除き、エラーがEOLについて何かに変わったとき、私はその行の後ろにスペースがあり、そのスペースを削除したことを認識しました。私はPHPのドキュメントからその行をコピーしていたので、Linux対Windowsの何かをしなければならない。EOL – JasonDavis

+0

それはそうするだろう。文字が送信された後に別のheader()エントリを実行しようとすると、適切なヘッダシーケンスの一部ではない空白または文字が送信されます。 – Drahkar

+0

おかげさまで、私は知っていたことが分かりましたが、実際には1つのスペースしか見つけられませんでした。私は '$ _SERVER [" SERVER_PROTOCOL' – JasonDavis

0

FCGIを使用している場合は、404行をheader("Status: 404 Not Found");に変更できますか?たぶんこれが役立ちます。

1

Nope; that testcase is fine

エラーは、あなたのテストケースではなく元のコードから来ており、テストケースで問題を再現できませんでした。だから私たちはそれを識別できません...

+0

を使用するアイデアが好きです。上記の私のコメントを参照してください、あなたは正しいです、それは私の元のコードに何か、空白 – JasonDavis