postfixadmin「そのドメインは存在しません」

事象

  • postfixadminの画面からドメインの追加をしようとしても「そのドメインは存在しません」というエラーが表示される。
  • apacheのログに次のような記録がある

    [error] [client 192.xxx.xxx.xxx] PHP Warning: mysql_real_escape_string() [<a href=’function.mysql-real-escape-string’>function.mysql-real-escape-string</a>]: A link to the server could not be established in /パス名/functions.inc.php on line 131, referer: http://192.xxx.xxx.xxx/url名/create-domain.php

原因

phpのmagic_quotes_gpcがオフになっている

  • Magic Quotes

マジッククオートは、PHPスクリプトに入力されるデータを 自動的にエスケープする機能。
オンの場合、全ての’ (シングルクオート), ” (ダブルクオート), (バックスラッシュ)およびNULL 文字がバックスラッシュで自動的にエスケープされる。 これは、addslashes() の機能と同じ。

3種類のマジッククオートディレクティブには..

magic_quotes_gpc HTTPリクエストデータ(GET, POST, そして COOKIE)に作用する。 実行時に設定することはできない。 PHPの出フォルトは、on。
magic_quotes_runtime 有効な場合、データベースやテキストファイルを含む 外部ソースからデータを返す関数の多くは、 バックスラッシュをクオートでエスケープする。 実行時に設定することができ、PHPでのデフォルトは
on。
magic_quotes_sybase 有効な場合、シングルクオートはバックスラッシュではなくシングルクオートで エスケープされる。 onの場合、 magic_quotes_gpc
の指定を完全に上書きする。 これら両方のディレクティブを有効にすると、シングルクオートは ”とエスケープされる。 ダブルクオートやNULLはそのままとなり、エスケープされない。

magic_quotes_gpcの設定を調べる

[root@example root]# cat /etc/php.ini |grep magic
; – magic_quotes_gpc = Off [Performance]
magic_quotes_gpc = Off 
magic_quotes_runtime = Off
; Use Sybase-style magic quotes (escape ‘ with ” instead of ‘).
magic_quotes_sybase = Off
[root@example root]#

対処

magic_quotes_gpcを変更して他のAPに支障がないのなら、php.iniを修正し、apacheを再起動する。