<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>OFF TOPIC! &#187; PHP</title>
	<atom:link href="http://www.luizxx.com/archives/tag/php/feed" rel="self" type="application/rss+xml" />
	<link>http://www.luizxx.com</link>
	<description>Luizxx Expansion Set</description>
	<lastBuildDate>Fri, 16 Jul 2010 04:13:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Mediawiki Search Engine</title>
		<link>http://www.luizxx.com/archives/273</link>
		<comments>http://www.luizxx.com/archives/273#comments</comments>
		<pubDate>Tue, 16 Dec 2008 21:08:07 +0000</pubDate>
		<dc:creator>Luiz</dc:creator>
				<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://luizxx.com/?p=273</guid>
		<description><![CDATA[Recentemente realizei a instalação de um sistema de ajuda/knowledge base rodando com base em Mediawiki e MySQL, porém após alguns dias quando já havia muito conteúdo e diversos usuários registrados fui notificado que a pesquisa (search) não estava sendo realizada corretamente e não retornava nenhum resultado ao serem pesquisadas as palavras php e asp (que [...]]]></description>
			<content:encoded><![CDATA[<p>Recentemente realizei a instalação de um sistema de ajuda/knowledge base rodando com base em <a href="http://www.mediawiki.org">Mediawiki</a> e <a href="http://www.mysql.com">MySQL</a>, porém após alguns dias quando já havia muito conteúdo e diversos usuários registrados fui notificado que a pesquisa (search) não estava sendo realizada corretamente e não retornava nenhum resultado ao serem pesquisadas as palavras php e asp (que abrangem boa parte do conteúdo até o momento).</p>
<p>Após algum tempo pesquisando verifiquei que o sistema de busca padrão do Mediawiki é o &#8220;fulltext search&#8221;, que por padrão ignora quaisquer palavras com menos de 4 caracteres nas pesquisas.</p>
<p>Para contornar esta situação era necessário setar o padrão mínimo de caracteres para 3 diretamente no banco de dados através do próprio my.cnf setando a variável &#8220;ft_min_word_len&#8221; para o valor desejado e reiniciando o serviço do MySQL:</p>
<blockquote><p>[mysqld]<br />
&#8230;<br />
<span style="color: #aa0000;">ft_min_word_len=3</span></p></blockquote>
<p>E após a alteração do banco de dados é necessário recriar os índices de pesquisa do Mediawiki para utilizar o novo padrão, para realizar esta operação entre com a seguinte <em>query</em> em sua base de dados:</p>
<p>REPAIR TABLE searchindex QUICK;</p>
<p>Lembrando que a tabela searchindex pode ter o nome diferente dependendo do prefixo utilizado durante a instalação do mediawiki / criação da base de dados, por exemplo, se meu <em>prefix</em> é &#8220;wiki_&#8221; a minha tabela terá o nome &#8220;wiki_searchindex&#8221;.</p>
<p>Maiores informações de fulltext search na <a href="http://dev.mysql.com/doc/refman/4.1/en/fulltext-fine-tuning.html">documentação oficial do MySQL</a>&#8230;</p>
<p>Lembrando que existem <a href="http://http://www.mediawiki.org/wiki/Fulltext_search_engines">diversas engines</a> que aprimoram o sistema de busca do Mediawiki, como Lucene-search e Sphinx, se seu sistema de wiki for relativamente grande ou complexo recomendo dar uma olhada&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.luizxx.com/archives/273/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Server support on PHP (php-mssql)</title>
		<link>http://www.luizxx.com/archives/202</link>
		<comments>http://www.luizxx.com/archives/202#comments</comments>
		<pubDate>Tue, 30 Sep 2008 19:59:11 +0000</pubDate>
		<dc:creator>Luiz</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Unix / Linux]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://luizxx.com/?p=202</guid>
		<description><![CDATA[Yesterday I was compilling a new release of PHP packages for Red Hat Enterprise 5 (RPM) in the x86_64 architecture and I got a bug during the compilation proccess of the php-mssql module that requires the freetds-devel package to be built. By default, the configure script doesn&#8217;t find the required freetds libraries on the system [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I was compilling a new release of PHP packages for Red Hat Enterprise 5 (RPM) in the x86_64 architecture and I got a bug during the compilation proccess of the php-mssql module that requires the freetds-devel package to be built.</p>
<p>By default, the configure script doesn&#8217;t find the required freetds libraries on the system (even if they are correctly installed) because in the lastest versions of freetds we don&#8217;t have the tds.h and libtds.a files.</p>
<p>To bypass this check and continue building your packages normally you can use this simple and dirty workarround:</p>
<p>$ touch /usr/include/tds.h<br />
$ touch /usr/lib/libtds.a</p>
<p>Or you can edit the configure script (make a patch and apply during the build process) to find the correct files and directories.</p>
<p>Official report: <a href="http://bugs.php.net/bug.php?id=44991" target="_blank">http://bugs.php.net/bug.php?id=44991</a><br />
Tanks to <a href="http://howtogetitworking.com/2008/02/26/how-to-install-mssql-extension-for-php-on-unix/" target="_blank">Brian </a>for the help!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.luizxx.com/archives/202/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilizando módulo &#8220;Suhosin PHP&#8221;</title>
		<link>http://www.luizxx.com/archives/165</link>
		<comments>http://www.luizxx.com/archives/165#comments</comments>
		<pubDate>Fri, 29 Aug 2008 21:33:17 +0000</pubDate>
		<dc:creator>Luiz</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Tecnology]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://luizxx.com/?p=165</guid>
		<description><![CDATA[Recentemente realizamos a instalação do módulo Suhosin em todos os servidores da nova arquitetura de hospedagem da Locaweb de forma opcional para os clientes, porém boa parte dos desenvolvedores não conhece o potencial e as funcionalidades deste módulo que pode ser ativado facilmente em sua hospedagem compartilhada ou em seus próprios servidores. Suhosin é um [...]]]></description>
			<content:encoded><![CDATA[<p>Recentemente realizamos a instalação do módulo <a href="http://www.hardened-php.net/suhosin/" target="_blank">Suhosin</a> em todos os servidores da nova arquitetura de hospedagem da <a href="http://www.locaweb.com.br" target="_blank">Locaweb </a>de forma opcional para os clientes, porém boa parte dos desenvolvedores não conhece o potencial e as funcionalidades deste módulo que pode ser ativado facilmente em sua hospedagem compartilhada ou em seus próprios servidores.</p>
<p>Suhosin é um módulo avançado de proteção para servidores de aplicação rodando PHP, é foi desenvolvido para proteger tanto os servidores como os próprios desenvolvedores de vulnerabilidades nas aplicações construídas e no próprio core do PHP.</p>
<p>O módulo é compatível com instalações do PHP em qualquer sistema compatível, não apresentando problemas com outros módulos presentes na instalação, incluindo Zend Optimizer e APC.</p>
<p>Um dos recursos mais interessantes deste módulo é a encriptação transparente de cookies e dados de sessão, evitando inumeros ataques de <em>&#8220;session hijacking&#8221;</em> O módulo também realiza inumeros tipos de filtragem de dados em tempo real, evitando ataques DOS e scripts maliciosos sendo executados no servidor.</p>
<p>Para aqueles que precisam desenvolver aplicações em PHP com mais segurança em um ambiente controlado e auditado, o módulo é muito útil!</p>
<p>Ah sim, para aqueles que possuem planos de hospedagem Linux na Locaweb e desejam realizar a ativação do módulo, é necessário apenas adicionar a seguinte linha em seu arquivo <em>php-cgi.ini</em>:</p>
<p><em>extension=suhosin.so</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.luizxx.com/archives/165/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Timezone no PHP</title>
		<link>http://www.luizxx.com/archives/43</link>
		<comments>http://www.luizxx.com/archives/43#comments</comments>
		<pubDate>Mon, 11 Feb 2008 01:40:26 +0000</pubDate>
		<dc:creator>Luiz</dc:creator>
				<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://luizxx.com/archives/43</guid>
		<description><![CDATA[Muitas vezes o horário de verão brasileiro pode afetar o funcionamento de nossas aplicações escritas em PHP que utilizem funções de data, e para que não aconteça nenhum problema existem algumas alternativas que podem ser adotadas para automatizar o processo de transição de horário (BRT/BRST). A mais comum delas (e menos eficiente na minha opinião) [...]]]></description>
			<content:encoded><![CDATA[<p>Muitas vezes o horário de verão brasileiro pode afetar o funcionamento de nossas aplicações escritas em PHP que utilizem funções de data, e para que não aconteça nenhum problema existem algumas alternativas que podem ser adotadas para automatizar o processo de transição de horário (BRT/BRST).</p>
<p>A mais comum delas (e menos eficiente na minha opinião) é setar o horário diretamente no seu php.ini através da linha:</p>
<p><code>date.timezone = "Etc/GMT+2"</code></p>
<p>Sendo que também é possível utilizar esta chamada diretamente no script de sua aplicação com:</p>
<p><code>date_default_timezone_set("Etc/GMT+2");</code></p>
<p>A forma mais eficiente que encontrei para realizar estas transições de horário de forma automática foi utilizando o módulo php-timezonedb que está disponível através do PECL.</p>
<p>Para realizar a instalação do timezonedb é necessário ter as bibliotecas do php (php-dev) disponíveis na máquina.</p>
<p>A forma mais prática de instalação é diretamente através do repositório PECL:</p>
<p><code># pecl install timezonedb</code></p>
<p>E para carregar o módulo na inicialização do PHP, adicione ao php.ini (ou uma entrada no php.d):</p>
<p><code>extension=timezonedb.so</code></p>
<p>Para testar o módulo sem a necessidade de reiniciar o servidor web utilize o próprio php-cli:</p>
<p><code># php-cli -r "print date('d/m/Y H:i:s e T');"</code></p>
<p>A saída (em horário de verão) será algo parecido com:</p>
<p>04/02/2008 19:23:32 America/Sao_Paulo BRST</p>
<p>E em horário normal:</p>
<p>04/02/2008 19:23:32 America/Sao_Paulo BRT</p>
<p>Para instalação em um número elevado de servidores é recomendável utilizar o proprio empacotamento de sua distribuicaopara automatizar o processo. Para aqueles que utilizam distribuicoes baseadas em RPM, deixei o pacote source <a href="http://www.luizxx.com/archive/redhat/php-timezonedb-2007.11-el4.src.rpm">disponivel para download</a>&#8230; <a href="http://www.luizxx.com/archive/redhat/php-timezonedb-2007.11-el4.src.rpm">php-timezonedb.el4.src.rpm</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.luizxx.com/archives/43/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalando PHP5 + Suhosin</title>
		<link>http://www.luizxx.com/archives/25</link>
		<comments>http://www.luizxx.com/archives/25#comments</comments>
		<pubDate>Sat, 06 Oct 2007 12:51:53 +0000</pubDate>
		<dc:creator>Luiz</dc:creator>
				<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://luizxx.com/?p=25</guid>
		<description><![CDATA[Suhosin é um avançado sistema de proteção que foi desenvolvido com o objetivo de proteger servidores e usuários de falhas nas aplicações escritas em PHP e implementar correções à própria base da linguagem. É separado em duas partes independentes que podem ser utilizadas em conjunto ou individualmente, sendo que uma delas é um patch a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.hardened-php.net/suhosin" target="_blank">Suhosin </a>é um avançado sistema de proteção que foi desenvolvido com o objetivo de proteger servidores e usuários de falhas nas aplicações escritas em <a href="http://www.php.net" target="_blank">PHP</a> e implementar correções à própria base da linguagem. É separado em duas partes independentes que podem ser utilizadas em conjunto ou  individualmente, sendo que uma delas é um <a href="http://www.hardened-php.net/suhosin/download.html" target="_blank">patch a ser aplicado</a> no core do PHP que implementa <a href="http://www.hardened-php.net/suhosin/a_feature_list.html" target="_blank">proteção contra vulnerabilidades do sistema (Engine Protection)</a> e a outra parte é uma <a href="http://www.hardened-php.net/suhosin/download.html" target="_blank">extensão</a> que coloca em funcionamento <a href="http://www.hardened-php.net/suhosin/a_feature_list.html" target="_blank">todas as outras proteções e implementações de segurança</a>.</p>
<p><em>Para aplicar o patch Suhosin será necessário recompilar o PHP do servidor!</em></p>
<p>Para descrever os processos de instalação estarei me baseando em sistemas <a href="http://www.redhat.com" target="_blank">RedHat</a> (RPM), porém os procedimentos principais são os mesmos em qualquer distribuição&#8230;</p>
<p><strong>Aplicando Suhosin Patch<br />
</strong></p>
<p>Primeiramente faça o download do pacote Suhosin, da signature key da release a partir do <a href="http://www.hardened-php.net/suhosin/download.html" target="_blank">site oficial</a> e os fontes do <a href="http://www.php.net" target="_blank">PHP</a> que utilizaremos para embutir o patch, e não se esqueça de verificar o md5 em todos os arquivos após o download para garantir que os fontes estão intactos.</p>
<p>Baixando a signature key e importando para nosso GNU Privacy Guard keychain:</p>
<blockquote><p><em>wget http://www.hardened-php.net/hardened-php-signature-key.asc<br />
gpg &#8211;import &lt; hardened-php-signature-key.asc </em></p></blockquote>
<p>Como este tutorial está baseado em RedHat, baixe e instale o pacote source da sua versão do php (ie. <em>rpm -ivh php-5.1.6-12.el5.src.rpm</em>) e entre em seu diretório <em>source</em> do rpmbuild (ie.<em> </em><span class="system"><em>/usr/src/redhat/SOURCES</em>), lembrando que em outras distribuições é necessário entrar no diretório onde o fonte do PHP se encontra.</span></p>
<p>Agora, faça a checagem da gpg no arquivo .sig baixado:</p>
<blockquote><p><em>gpg suhosin-patch-5.1.6-0.9.6.patch.gz.sig </em></p></blockquote>
<p>Descompacte o patch do Suhosin na pasta dos sources e renomeie o patch nos padrões RedHat (é mais frescura mesmo, somente para quem usa distro RPM based) , e então entre na pasta dos SPECs e edite o arquivo referente ao PHP:</p>
<blockquote><p><em>mv suhosin-patch-5.1.6-0.9.6.patch<br />
php-5.1.6-suhosin.patchcd /usr/src/redhat/SPECS/<br />
vi php.spec</em></p></blockquote>
<p>Adicione <em><span class="system">&#8220;Patch0: php-5.1.6-suhosin.patch&#8221; </span></em><span class="system">no bloco onde são definidos os patches a serem aplicados, mas lembre-se que caso o patch <em>&#8220;</em></span><em>ecalloc&#8221; </em>estiver presente no spec ele deve ser desativado por apresentar conflitos com suhosin.</p>
<p>Adicione também a linha <em>&#8220;<span class="system">%patch0 -p1 -b .suhosin&#8221; </span></em><span class="system">ao bloco </span><em><span class="system">%setup -q</span></em><span class="system"> para entrar na compilação, segue exemplo:</span></p>
<blockquote><p><em> [...]<br />
Source51: php.ini</em></p>
<p><em>Patch0: php-5.1.6-suhosin.patch<br />
Patch1: php-5.1.4-gnusrc.patch<br />
Patch2: php-5.1.4-warnings.patch<br />
Patch5: php-4.3.3-install.patch<br />
Patch6: php-5.0.4-norpath.patch<br />
Patch7: php-4.3.2-libtool15.patch<br />
Patch13: php-5.0.2-phpize64.patch<br />
# Patch14: php-5.1.6-ecalloc.patch<br />
[...]<br />
%setup -q<br />
%patch0 -p1 -b .suhosin<br />
%patch1 -p1 -b .gnusrc<br />
%patch2 -p1 -b .warnings<br />
%patch5 -p1 -b .install<br />
%patch6 -p1 -b .norpath<br />
%patch7 -p1 -b .libtool15<br />
%patch13 -p1 -b .phpize64<br />
# %patch14 -p1 -b .ecalloc<br />
[...]</em></p></blockquote>
<p>Após as modificações recompile o PHP com:</p>
<blockquote><p><em>rpmbuild -ba php.spec </em></p></blockquote>
<p>Podem ser apresentadas diversas dependências que necessáriamente devem ser instaladas no sistema antes da compilação, para usuários RHEL, Fedora e CentOS podem utilizar o yum ou up2date. Para instalação a partir dos fontes ou em outras distribuições, instale todos os pacotes necessários antes de iniciar o processo de compilação.</p>
<p>Após o final da compilação e empacotamento os pacotes estarão disponíveis em <em>/usr/src/redhat/RPMS/i386</em> e já podem ser instalados com o suhosin-patch embutido.</p>
<p><strong>Instalando a extensão Suhosin</strong></p>
<p>Descompacte os fontes e compile com:</p>
<blockquote><p><em>tar xvfz suhosin-0.9.20.tgz<br />
cd suhosin-0.9.20<br />
phpize<br />
./configure<br />
make<br />
make install</em></p></blockquote>
<p>Para habilitar a extensão vamos incluir um novo arquivo de include para o PHP com o conteúdo &#8220;<em>extension=suhosin.so</em>&#8220;, ou adicione a linha diretamente ao php.ini. Para ativar o novo módulo apenas reinicie o Apache.</p>
<p>Apesar da instalação padrão já atender a maioria dos usuários, você pode personalizar as configurações do Suhosin para atender as necessidades de seu ambiente, para isso é disponível um <a href="http://www.hardened-php.net/suhosin/configuration.html" target="_blank">manual</a> diretamente no <a href="http://www.hardened-php.net/suhosin/configuration.html" target="_blank">site oficial</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.luizxx.com/archives/25/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
