1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

吐き出されるヘッダ情報をどうにかする - PHP初心者の覚え書き①

Posted at

前提

僕はもともと印刷屋で数年働いていたのですが、その後縁あってWEB屋に転職して現在に至る者です。
WEBの知識は大学生時代にGeocitiesやTripodでWEBスペースをレンタルしてそこにメモ帳でゴリゴリ書いたhtmlをアップする、という程度しか無かったのです。
なので転職してすぐの頃は「Wordpressって何」「いや、そもそもPHPって何」というところからスタートしました。また、転職した職場が教育体制が一切できていないところだったので僕のような無知な人間がいきなりWEBの保守を担当させられる、なんてこともザラでした。
なので僕はPHPに関する知識のベースが一切無い人間なのです。

…という前提があり、PHPを基礎からちゃんと学んでいない僕が現場の仕事をこなしていく上でぶつかった壁や学んだ事を覚え書きとして纏めていきたいと思います。
※なので、ちゃんと学んでいる人からすれば当たり前の事しか書いていないと思われますので、本文中におかしな点がありましたら「いや、それは間違っているぞ!」と突っ込みを入れていただけると助かります。

今回ぶつかった壁

UTF-8のサーバーに置かれた、Shift JISで書かれたPHPをブラウザで見ると盛大に文字化けする。
※もちろんPHPは僕が書いたものではなく、5年以上前に在籍していた人が残したものです。

環境

今回は以下の環境で実施しています。

OS Apache PHP
CentOS 6.3 2.2 5.6
UTF-8 ;default_charset = "iso-8859-1" default-character-set=utf8

※VirtualHostで運用。

やったこと

1.Apacheの設定でデフォルトの文字コードを無効にしてみる。

/etc/httpd/conf/httpd.conf
AddDefaultCharset UTF-8
↓ ↓
AddDefaultCharset off

⇒変化なし

2.Virtual Hostの文字コードを以下の様にしてみる。

/etc/httpd/conf.d/virtualhost.conf
<VirtualHost *:80>
AddDefaultCharset off
</VirtualHost>

⇒変化なし

3.metaタグをいじってみる。

/var/www/html/index.php
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift-jis">
</head>
curl -I http://example.com/index.php
(中略)
Content-Type: text/html; charset=UTF-8

⇒変化なし

4.header属性をいじる。

/var/www/html/index.php
<?php
header("Content-Type: text/html; charset=Shift-JIS");
?>
curl -I http://example.com/index.php
(中略)
Content-Type: text/html; charset=Shift-JIS

キマシタワァ*・゜゚・:.。..。.:・゜(n'∀')η゚・:.。..。.:・゜゚・*

結論

PHPはプログラムでヘッダー情報を吐き出しているため、ヘッダー情報を変更したければhtmlではなくプログラム部分のヘッダー属性をいじらないとダメ。

1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?