« Perl - パール | メイン | Server - サーバー »

2010年03月15日

phpMyAdmin or MySQL 文字化け

PHP処理の関係やMySQL、phpMyAdmin上で
文字化けする場合にはPHPソースに下記内容を加えると直る。

※紹介している内容はエンコードがUTF-8での場合

//SQL文字化け対策
$con = mysql_connect("localhost" , "アカウント名" , "パスワード") or die("接続失敗");
mysql_select_db("データベース名");
mysql_query('set character set utf8'); //UTF-8設定の場合

MySQLの設定が直接いじれる場合には my.ini 内部
[mysqld]の部分に下記2行を加えるだけで済む。

default-character-set=utf8
skip-character-set-client-handshake

以上でっす。


html で php を作動させる方法

.htaccess」を使う。
というか、.htaccess が使える場合に限る!

.htaccessに下記を書き込むと拡張子がhtmlのページでもphpが作動しまっす。

AddType application/x-httpd-php .htm .html

まーそれだけなんだけどー。

.htaccess について分からない場合は下記サイトでも参照してくだすぃ。

.htaccess実践活用術
http://www.shtml.jp/htaccess/

2009年07月18日

PHP アップロードファイル文字化け

PHPで日本語名のファイルをアップロードすると文字化けする場合の対処
もしくは、特定の文字コードに変換してアップロードしたい場合
先に言っておくと

関数
mb_convert_encoding を使う。

例題はfile1.phpというフォームからファイルをアップロードして
「doc」というフォルダーに保存するプログラム

file1.php

<html>
<head>
<tilte>アップロードフォーム</title>
</head>
<body>
<form method="POST" action="file2.php" enctype="multipart/form-data">
ファイル:
<input type="file" name="uploaded" size="50" />
<input type="submit" value="アップロード" />
</form>
</body>
</html>

file2.php(文字化けするタイプ)

<?php
move_uploaded_file
($_FIELS['uploaded']['tmp_name'],'./doc/'.$_FILES['uploaded']['name']);
echo
"アップロード成功しました。";
?>

file2.php(文字化けしないタイプ)

<?php
$str
= './doc/'.$_FILES['uploaded']['name'];
$str = mb_convert_encoding($str, "SJIS", "AUTO");
move_uploaded_file($_FILES['uploaded']['tmp_name'], $str);
echo
"アップロード完了しました。";
?>

補足
mb_convert_encoding(エンコードしたい部分, "変換したいコード", "変更前のコード")
AUTOにしておけば特に前のコードを気にすることが無い。
Windowsベースで日本語ファイルを保存する場合には
SJISでないと文字化けするっぽ。

2009年07月09日

Allowed memory size of ほにゃらら

PHPのプログラムや何かサービスを作っていて
下記のようなエラーメッセージが出るときがある。

Fatal error: Allowed memory size of 6777216 bytes exhausted (tried to allocate 8965128 bytes) in /usr/share/php/HTTP/Request.php on line 878

単純にPHPのメモリーリミットが足りないよって事らしい。
使用するメモリーが上限以内であれば php.inimemory_limitの数値を増やせばいいんだけど
増やしてもエラーが直らない時がる。
そんなんときは

memory_limit の値を -1 にすべし!

下記PHPマニュアルより

リソース制限

名前:memory_limt
デフォルト:128M
変更の可否:PHP_INI_ALL
変更履歴:PHP 5.2.0 より前は "8M"、PHP 5.2.0 では "16M"

以下に設定ディレクティブに関する簡単な説明を示します。

memory_limit integer
スクリプトが確保できる最大メモリをバイト数で指定します。
この命令は、 正しく書かれていないスクリプトがサーバーのメモリを食いつぶすことを防止するのに役立ちます。
もし、使用可能メモリに制限を設けたくない場合は、 ここに -1 を指定してください。

PHP 5.2.1 より前のバージョンでは、このディレクティブを使うためには
コンパイル時に configure で --enable-memory-limit を指定しなければなりません。
これは、関数 memory_get_usage() および memory_get_peak_usage() を使用する際にも必要となります。
integerを使用する際、その値はバイト単位で測られます。
この FAQ に記載された短縮表記を使用することも可能です。


Copyright ©2009 wghost All Rights Reserved.