MacのXAMPPを使用してローカルで開発およびテストしているPHPサイトでHTMLPurifierを使用しています。アプリはDoctrine2+Codeigniterを使用して構築されています。
モデルの保存時に約4つのテキストフィールドでHTMLPurifierを実行しています。これを行うと、「データを受信しません」というエラーメッセージが表示されることがあります。apacheログを確認すると、次のメッセージが表示されます。
*** set a breakpoint in malloc_error_break to debug
httpd(60406) malloc: *** error for object 0x2af7070: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
httpd(60412) malloc: *** error for object 0x2ae0004: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
httpd(60412) malloc: *** error for object 0x2af7070: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
[Sun Oct 21 13:13:18 2012] [notice] child pid 60414 exit signal Segmentation fault (11)
HTMLPurifierをオフにしても、エラーメッセージはトレースされません。
これが私が使用しているコードです:
// ContentMedia model
public function purifyHTMLText(){
$CI =& get_instance();
$this->imageCredits = $CI->applibrary->doPurify($this->imageCredits);
$this->contentCopy = $CI->applibrary->doPurify($this->contentCopy);
$this->extraCredits = $CI->applibrary->doPurify($this->extraCredits);
$this->authors = $CI->applibrary->doPurify($this->authors);
}
// AppLibrary
public function getHTMLPurifier(){
if(!isset($htmlPurifier)){
$CI =& get_instance();
$CI->load->library('HTMLPurifier');
$config = \HTMLPurifier_Config::createDefault();
$config->set('HTML.Allowed', 'a[href],br,b,strong,em');
$config->set('HTML.DefinitionID', 'mydef');
$config->set('HTML.DefinitionRev', 1);
$config->set('Cache.DefinitionImpl', 'Serializer');
$def = $config->maybeGetRawDefinition('HTML');
$this->htmlPurifier = new \HTMLPurifier($config);
}
}
public function doPurify($text){
$this->getHTMLPurifier();
return $this->htmlPurifier->purify($text);
}