ラベル PHP の投稿を表示しています。 すべての投稿を表示
ラベル PHP の投稿を表示しています。 すべての投稿を表示

2015年12月30日水曜日

php5-suhosinパッケージの読み込みエラーを修正

みなさん、こんにちは。


PHPモジュール、suhosinパッケージの読み込みエラーを修正しました。


PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525+lfs/suhosin.so' - /usr/lib/php5/20100525+lfs/suhosin.so: cannot open shared object file: No such file or directory in Unknown on line 0

こんなエラーメールが毎時09分と39分に自宅のwebサーバーから送られてきます。
実はかなり前から送られてるのですが、面倒なのでそのままにしていました。
さすがに、そろそろ対応しようと思います。




読み込もうとしている、/usr/lib/php5/20100525+lfs/suhosin.so が、本当にあるか確認してみます。

debian:~# ls -la /usr/lib/php5/20100525+lfs/
合計 468
drwxr-xr-x 2 root root   4096 2014-05-24 22:44 .
drwxr-xr-x 4 root root   4096 2014-05-24 22:44 ..
-rw-r--r-- 1 root root  91564 2014-04-19 07:07 gd.so
-rw-r--r-- 1 root root  38336 2014-04-19 07:07 mcrypt.so
-rw-r--r-- 1 root root  46512 2014-04-19 07:07 mysql.so
-rw-r--r-- 1 root root 128460 2014-04-19 07:07 mysqli.so
-rw-r--r-- 1 root root 108084 2014-04-19 07:07 pdo.so
-rw-r--r-- 1 root root  30276 2014-04-19 07:07 pdo_mysql.so

suhosin.soというファイルは存在していないのでエラーがでるのは当たり前ですね。


そもそもPHPのsuhosintモジュールて何者なのでしょう。


Suhosin は PHP 導入環境向けの高度な防御システムです。
PHP アプリケーションや PHP の中核部分にある既知や未知の欠陥からサーバやユーザを守るために設計されました。
Suhosin は二つの独立した部分から成り、それぞれ別々に利用したり組み合わせて使えます。
一つ目は PHP の中核部分に対する小さなパッチで、これはバッ ファオーバーフローや書式指定文字列の脆弱性に対する低レベルの防御をいくつか実装しています。
二つ目は他のすべての防御を実装する強力な PHP 拡張です。


PHPの脆弱性をカバーするセキュリティーパッチのようです。

Debianではwheezyから削除された模様で、アップグレードの際に設定のファイルのみが残ってしまったため、前述のエラーが発生しているのでしょう。


まずは、現在のパッケージの状況を確認してみます。

debian:~# dpkg -l php5-suhosin
||/ 名前         バージョ アーキテ 説明
+++-==============-============-============-=================================
rc  php5-suhosin   0.9.32.1-1   i386         advanced protection module for ph

rcとなっていて現在は未設定となっています。


パッケージを完全削除します。

debian:~# dpkg --purge php5-suhosin
(データベースを読み込んでいます ... 現在 24562 個のファイルとディレクトリがイン ストールされています。)
php5-suhosin を削除しています ...
php5-suhosin の設定ファイルを削除しています ...
libapache2-mod-php5 のトリガを処理しています ...
Reloading web server config: apache2.


もう一度パッケージの状態を確認してみます。

debian:~# dpkg -l php5-suhosin
||/ 名前         バージョ アーキテ 説明
+++-==============-============-============-=================================
un  php5-suhosin   <なし>                  (説明 (description) があり

unとなって、未インストール状態となりました。


これでエラーは発生しなくなったハズです。


apt-get よりは、dpkg を使ったほうが今回のようにパッケージ関係が変になった時は有効です。


ではでは~☆ミ

2015年5月25日月曜日

phpのmailフォームで送信したメールが文字化けする

みなさん、こんにちは


PHPで作成されたWebのメールフォームから送られたメールが文字化けする。
とのことでしたので、内容を確認してみました。


Subject: 縺雁撫縺・粋繧上○ ← こんな感じに化けるそうです。
おそらく正しくは、Subject: お問い合わせ なのでしょうけど。
UTF-8からShift-JISの変換に失敗したときの症状です。


PHPのコード確認してみます。

$send_contact=mail($to,$subject,$message,$headers);

う~ん・・・・
これだけじゃぁ、エンコード考えてないので文字化けしちゃうよね。


うちの会社、いったい何処の外注に依頼したのでしょうか・・・ orz


mail()使うんだったら

mb_internal_encoding("UTF-8");
$send_contact=mail($to,mb_encode_mimeheader($subject,'UTF-8'),mb_convert_encoding($message,'UTF-8'),$headers);

こんな感じでしょうか。


でも、mb_send_mail()を使って

mb_language("ja");
mb_internal_encoding("UTF-8");
$send_contact=mb_send_mail($to,$subject,$message,$headers);

としたほうがスッキリしているかも知れません。
$toと$headersにはコード上、半角文字しか入りませんから・・・・。


ところで、UTF-8指定しているところから想像できると思いますが、サーバーはLinuxを使用しています。
元ソースの改行コードをみてみると、"\r\n"となっていてWindows仕様になっているので、"\n"に変更しておきました。


うちの会社、いったい何処の外注に依頼したのでしょうか・・・ orz


ではでは~☆ミ