<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[沧海一粟]]></title> 
<link>http://www.dzhope.com/index.php</link> 
<description><![CDATA[Web系统架构与服务器运维,php开发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[沧海一粟]]></copyright>
<item>
<link>http://www.dzhope.com/post//</link>
<title><![CDATA[php-ext-trie-filter 过滤关键词]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[服务器技术]]></category>
<pubDate>Sun, 06 Nov 2016 14:11:41 +0000</pubDate> 
<guid>http://www.dzhope.com/post//</guid> 
<description>
<![CDATA[ 
	安装 libdatrie , 需要 libdatrie-0.2.4 或更新的版本<br/><br/>它依赖 libiconv .<br/>安装:<br/>================================<br/><div class="code"><br/>wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz<br/>tar -zxf libiconv-1.14.tar.gz<br/>cd libiconv-1.14<br/>./configure<br/>make &amp;&amp; make install<br/></div><br/>libdatrie 下载地址:<br/><a href="http://linux.thai.net/~thep/datrie/datrie.html#Download" target="_blank">http://linux.thai.net/~thep/datrie/datrie.html#Download</a><br/><br/>安装:<br/>================================<br/><div class="code"><br/>wget ftp://linux.thai.net/pub/ThaiLinux/software/libthai/libdatrie-0.2.4.tar.gz<br/>tar -zxf libdatrie-0.2.4.tar.gz<br/>cd libdatrie-0.2.4<br/><br/>./configure --prefix=/usr/local/libdatrie/<br/>make ICONV_LIBS=&#039;/usr/local/lib/libiconv.so&#039;<br/>make install<br/></div><br/><br/>编译出现错误 trietool.c:125: undefined reference to `libiconv'<br/>解决办法为：./configure LDFLAGS=-L/usr/local/lib LIBS=-liconv<br/><br/>安装 PHP 扩展<br/>================================<br/><div class="code"><br/>wget https://github.com/wulijun/php-ext-trie-filter/archive/master.zip<br/>unzip master.zip<br/>cd php-ext-trie-filter-master/<br/>/usr/local/php/bin/phpize<br/>./configure --with-php-config=/usr/local/php/bin/php-config --with-trie_filter=/usr/local/libdatrie/<br/>make &amp;&amp; make install<br/></div><br/>将生成的 trie_filter.so 文件复制到 php 扩展目录,并在 php.ini 中添加该文件<br/><br/>修改 php.ini 文件，添加 trie_filter 扩展：extension=trie_filter.so，重启PHP。<br/>&nbsp;&nbsp; 查看phpinfo发现trie_filter 扩展可用，如下图所示：<br/><a href="http://www.dzhope.com/attachment.php?fid=247" target="_blank"><img src="http://www.dzhope.com/attachment.php?fid=247" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/><br/><a href="https://github.com/wulijun/php-ext-trie-filter" target="_blank">https://github.com/wulijun/php-ext-trie-filter</a><br/><br/>=============遇到的问题===============<br/>安装libiconv如果遇到下面的问题：<br/><div class="code"><br/>In file included from progname.c:26:0:<br/>./stdio.h:1010:1: error: &#039;gets&#039; undeclared here (not in a function)<br/> _GL_WARN_ON_USE (gets, &quot;gets is a security hole - use fgets instead&quot;);<br/> ^<br/>make&#91;2&#93;: *** &#91;progname.o&#93; Error 1<br/>make&#91;2&#93;: Leaving directory `/usr/local/directadmin/custombuild/libiconv-1.14/srclib&#039;<br/>make&#91;1&#93;: *** &#91;all&#93; Error 2<br/>make&#91;1&#93;: Leaving directory `/usr/local/directadmin/custombuild/libiconv-1.14/srclib&#039;<br/>make: *** &#91;all&#93; Error 2<br/><br/></div><br/><br/>解决方案： <br/><div class="code"><br/>cd /tmp/libiconv-1.14/srclib<br/>vim stdio.in.h<br/></div><br/><br/>找到这行内容：<br/><div class="code"><br/>_GL_WARN_ON_USE (gets, &quot;gets is a security hole - use fgets instead&quot;);<br/></div><br/>替换成：<br/><div class="code"><br/>#if defined(__GLIBC__) &amp;&amp; !defined(__UCLIBC__) &amp;&amp; !__GLIBC_PREREQ(2, 16)<br/>_GL_WARN_ON_USE (gets, &quot;gets is a security hole - use fgets instead&quot;);<br/>#endif<br/></div><br/><br/>注意：结尾的#endif也要包括。<br/><br/><br/>安装PHP如果遇到下面的问题：<br/><div class="code"><br/>/usr/include/stdio.h:325:14: note: expected ‘size_t *’ but argument is of type ‘zend_size_t *’<br/> extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __THROW __wur;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^<br/>/root/soft/soft/php-ext-trie-filter/trie_filter.c:566:27: error: macro &quot;RETVAL_STRINGL&quot; requires 3 arguments, but only 2 given<br/>&nbsp;&nbsp;&nbsp;&nbsp; RETVAL_STRINGL(p, plen);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ^<br/>/root/soft/soft/php-ext-trie-filter/trie_filter.c:566:5: error: ‘RETVAL_STRINGL’ undeclared (first use in this function)<br/>&nbsp;&nbsp;&nbsp;&nbsp; RETVAL_STRINGL(p, plen);<br/>&nbsp;&nbsp;&nbsp;&nbsp; ^<br/></div><br/><br/>解决方案：<br/><div class="code"><br/>vi php-ext-trie-filter/trie_filter.c<br/></div><br/><br/>修改：<br/><div class="code"><br/>RETVAL_STRINGL(p, plen);<br/>中PHP7这个宏定义只需要两个参数,<br/>而PHP5需要三个<br/><br/>#if PHP_MAJOR_VERSION &lt; 7<br/>&nbsp;&nbsp;&nbsp;&nbsp;RETVAL_STRINGL(p, plen,0);<br/>#else<br/>&nbsp;&nbsp;&nbsp;&nbsp;RETVAL_STRINGL(p, plen);<br/>#endif<br/>解决<br/></div><br/><br/>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post//#blogcomment</link>
<title><![CDATA[[评论] php-ext-trie-filter 过滤关键词]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.dzhope.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>