mirror of
https://github.com/php/doc-pt_br.git
synced 2026-03-23 22:52:12 +01:00
Fix build
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 86e6094e86b84a51d00ab217ac50ce8dde33d82a Maintainer: ae Status: ready --><!-- CREDITS: ae,fibbarth,fabioluciano,rogeriopradoj,adiel,geekcom -->
|
||||
<!-- EN-Revision: 027f187b3ed8cdec60db6f83baf8f62b536d1101 Maintainer: ae Status: ready --><!-- CREDITS: ae,fibbarth,fabioluciano,rogeriopradoj,adiel,geekcom -->
|
||||
|
||||
<section xml:id="ini.core" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Descrição das principais diretivas do &php.ini;</title>
|
||||
@@ -135,12 +135,6 @@
|
||||
<entry>PHP_INI_ALL com restrições</entry>
|
||||
<entry>Disponível a partir do PHP 7.0.0.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><link linkend="ini.zend.ze1-compatibility-mode">zend.ze1_compatibility_mode</link></entry>
|
||||
<entry>"0"</entry>
|
||||
<entry>PHP_INI_ALL</entry>
|
||||
<entry>Removida no PHP 5.3.0.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>detect_unicode</entry>
|
||||
<entry>"1"</entry>
|
||||
@@ -417,31 +411,6 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry xml:id="ini.zend.ze1-compatibility-mode">
|
||||
<term>
|
||||
<parameter>zend.ze1_compatibility_mode</parameter>
|
||||
<type>bool</type>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Ativa o modo de compatibilidade com Zend Engine 1 (PHP 4). Afeta
|
||||
a clonagem, conversão (objetos sem propriedades são convertidos para &false; ou 0) e a <link
|
||||
linkend="language.oop5.object-comparison">comparação de objetos</link>.
|
||||
Neste modo, objetos são passados por valor em vez de referência por
|
||||
padrão.
|
||||
</para>
|
||||
<para>
|
||||
Veja também seção entitulada
|
||||
<link linkend="migration5">Migrando do PHP 4 para o PHP 5</link>.
|
||||
</para>
|
||||
<warning>
|
||||
<simpara>Este recurso se tornou <emphasis>OBSOLETO</emphasis> e foi <emphasis>REMOVIDO</emphasis>
|
||||
a partir do PHP 5.3.0.
|
||||
</simpara>
|
||||
</warning>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry xml:id="ini.hard-timeout">
|
||||
<term>
|
||||
<parameter>hard_timeout</parameter>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: e9f972da6918eabb189ba377822a1d6ad982c96d Maintainer: ae Status: ready --><!-- CREDITS: galvao,ae,fabioluciano,geekcom,adiel -->
|
||||
<!-- EN-Revision: 1fb41f1900406a130e59f37d6e66538a64048524 Maintainer: ae Status: ready --><!-- CREDITS: galvao,ae,fabioluciano,geekcom,adiel -->
|
||||
|
||||
<section xml:id="ini.list" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<title>Lista de diretivas do &php.ini;</title>
|
||||
@@ -1491,19 +1491,13 @@
|
||||
<entry><link linkend="ini.mysqlnd.trace-alloc">mysqlnd.trace_alloc</link></entry>
|
||||
<entry>""</entry>
|
||||
<entry>PHP_INI_SYSTEM</entry>
|
||||
<entry>Disponível desde PHP 5.5.0.</entry>
|
||||
<entry>Disponível desde o PHP 5.5.0.</entry>
|
||||
</row>
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('mysqlnd-memcache.configuration.list')/*)" />
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('mysqlnd-ms.configuration.list')/*)" />
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('mysqlnd-mux.configuration.list')/*)" />
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('mysqlnd-qc.configuration.list')/*)" />
|
||||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('mysqlnd-uh.configuration.list')/*)" />
|
||||
<row>
|
||||
<entry><link linkend="ini.nsapi.read-timeout">nsapi.read_timeout</link></entry>
|
||||
<entry>"60"</entry>
|
||||
<entry>PHP_INI_ALL</entry>
|
||||
<entry></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><link linkend="ini.oci8.connection-class">oci8.connection_class</link></entry>
|
||||
<entry>""</entry>
|
||||
@@ -2530,12 +2524,6 @@
|
||||
<entry>PHP_INI_SYSTEM</entry>
|
||||
<entry>Disponível desde PHP 5.4.0</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><link linkend="ini.zend.ze1-compatibility-mode">zend.ze1_compatibility_mode</link></entry>
|
||||
<entry>"0"</entry>
|
||||
<entry>PHP_INI_ALL</entry>
|
||||
<entry>Disponível desde PHP 5.0.0. Removido no PHP 5.3.0.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><link linkend="ini.zend-extension">zend_extension</link></entry>
|
||||
<entry>NULL</entry>
|
||||
|
||||
@@ -1,977 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 6fe0f9389b85c7b574f818acb7aa5192d31ac949 Maintainer: narigone Status: ready --><!-- CREDITS: diegopires,geekcom,adiel -->
|
||||
<appendix xml:id="migration5" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Migrando do PHP 4 para o PHP 5.0.x</title>
|
||||
<para>
|
||||
&manual.migration.seealso;
|
||||
<link linkend="migration51">5.1.x</link>,
|
||||
<link linkend="migration52">5.2.x</link>,
|
||||
<link linkend="migration53">5.3.x</link>,
|
||||
<link linkend="migration54">5.4.x</link>,
|
||||
<link linkend="migration55">5.5.x</link> e
|
||||
<link linkend="migration56">5.6.x</link>.
|
||||
</para>
|
||||
|
||||
<section xml:id="migration5.changes">
|
||||
<title>O que mudou no PHP 5.0.x</title>
|
||||
<para>
|
||||
PHP 5 e o integrado Zend Engine 2 tiveram grandes melhorias na performance
|
||||
e capacidades dos PHP's, mas também tiveram muito cuidado em quebrar a menor
|
||||
quantidade possível de códigos existentes. Portanto migrar seu código do PHP 4 para o 5
|
||||
deve ser muito fácil. A maioria dos códigos PHP 4 existentes devem estar prontos para rodar
|
||||
sem alterações, mas você deve estar ciente sobre <link
|
||||
linkend="migration5.incompatible">algumas diferenças</link> e
|
||||
tomar cuidado de testar seu código antes de mudar as versões em seu ambiente
|
||||
de produção.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="migration5.incompatible">
|
||||
<title>Alterações Incompatíveis com Versões Anteriores</title>
|
||||
<para>
|
||||
A maioria dos códigos PHP 4 existentes deve funcionar sem mudanças, mas você
|
||||
deve ter atenção às seguintes alterações incompatíves com versões anteriores:
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<simpara>
|
||||
Existem algumas <link linkend="reserved.keywords">palavras reservadas
|
||||
novas</link>.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>strrpos</function> e <function>strripos</function> agora usam
|
||||
o texto todo como busca (needle).
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
O uso ilegal de posição de string causará <constant>E_ERROR</constant> ao invés
|
||||
de <constant>E_WARNING</constant>. Um exemplo de uso ilegal é:
|
||||
<literal>$str = 'abc'; unset($str[0]);</literal>.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>array_merge</function> foi alterada para aceitar somente arrays. Se uma
|
||||
variavel diferente de array for passada, um <constant>E_WARNING</constant> será lançado
|
||||
para cada parâmetro. Tenha cuidado porque seu código pode iniciar
|
||||
emitindo um <constant>E_WARNING</constant>.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
A variável de servidor <constant>PATH_TRANSLATED</constant> não é mais setada implicitamente no
|
||||
Apache2 SAPI em contraste com o ocorrido no PHP 4, onde ele é setado com
|
||||
o mesmo valor que a variável de servidor <constant>SCRIPT_FILENAME</constant> quando não era
|
||||
populada pelo Apache. Esta mudança foi realizada para seguir a <link
|
||||
xlink:href="&url.rfc;3875">Especificação CGI/1.1</link>. Por favor consulte o <link
|
||||
xlink:href="&url.php.bugs;23610">bug #23610</link> para mais informações,
|
||||
e veja mais sobre a descrição do <varname>$_SERVER['PATH_TRANSLATED']</varname>
|
||||
no manual. Este problema
|
||||
afeta as versões >= 4.3.2 do PHP.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
A constante <constant>T_ML_COMMENT</constant> não é mais definida
|
||||
pela extensão <link linkend="ref.tokenizer">Tokenizer</link>. Se o
|
||||
error_reporting estiver configurado para <constant>E_ALL</constant>, o PHP irá
|
||||
gerar um aviso. Embora o <constant>T_ML_COMMENT</constant> não
|
||||
ser usado totalmente, ele é definido no PHP 4. Em ambas versões, PHP 4 e PHP 5,
|
||||
// e /* */ são consideradas como constantes <constant>T_COMMENT</constant>
|
||||
. Entrentanto, o estilo de comentários do PHPDoc <literal>/** */</literal>, que começou a ser interpretado
|
||||
pelo PHP 5, é reconhecido como <constant>T_DOC_COMMENT</constant>.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<varname>$_SERVER</varname> deve ser populado com <varname>argc</varname> e
|
||||
<varname>argv</varname> se
|
||||
<link linkend="ini.variables-order">variables_order</link> inclue "S".
|
||||
Se você configurou especificamente seu sistema para não criar a variável
|
||||
<varname>$_SERVER</varname>, então é claro que não estará lá.
|
||||
Esta alteração faz com que <varname>argc</varname>
|
||||
e <varname>argv</varname> sempre esteja disponível na versão CLI independente da configuração da
|
||||
<link linkend="ini.variables-order">variables_order</link>.
|
||||
Assim como, a versão CLI agora sempre popula as variáveis globais
|
||||
<varname>$argc</varname> e <varname>$argv</varname>.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
Um objeto sem propriedades não será mais considerado "vazio".
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
Em alguns casos as classes devem ser declaradas antes de serem usadas. Isto acontece somente se
|
||||
algumas das novas funcionalidades do PHP 5 (como as <link
|
||||
linkend="language.oop5.interfaces">interfaces</link>) são usadas.
|
||||
Caso contrário, o comportamento é o antigo.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>get_class</function>, <function>get_parent_class</function>
|
||||
e <function>get_class_methods</function> agora retornam o nome das
|
||||
classes/métodos como são declaradas (case-sensitive) o que pode causar
|
||||
problemas com scripts antigos que utilizavam o comportamento anterior (o
|
||||
nome da classe/método sempre era retornada em letras minúsculas). Uma possível solução
|
||||
é procurar por essas funções no seu script e utilizar a função
|
||||
<function>strtolower</function>.
|
||||
</simpara>
|
||||
<simpara>
|
||||
Esta mudança de case-sensite change também se aplica a
|
||||
<link linkend="language.constants.predefined">constantes mágicas pré-definidas
|
||||
</link> <constant>__CLASS__</constant>,
|
||||
<constant>__METHOD__</constant>, e <constant>__FUNCTION__</constant>.
|
||||
Esses valores são retornadas exatamente como são declarados (case-sensitive).
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>ip2long</function> agora retorna &false; quando um endereço IP inválido
|
||||
é passado como argumento para a funcão, e não mais
|
||||
<literal>-1</literal>.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
Se existem funcões definidas no arquivo incluído, elas podem ser usadas
|
||||
no arquivo que a inclui independete se antes ou depois do <function>return</function>.
|
||||
Se o mesmo arquivo for incluído duas vezes, o PHP 5 emitirá um erro fatal porque as funções
|
||||
já foram declaradas, enquanto o PHP 4 não se importa com isso.
|
||||
É recomendado o uso de <function>include_once</function> ao invés de
|
||||
verificar se o arquivo já foi incluído e retornar uma condição
|
||||
dentro do arquivo incluído.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>include_once</function> e <function>require_once</function>
|
||||
primeiro normaliza o caminho para o arquivo no Windows de modo que incluir
|
||||
A.php e a.php incluirá somente um arquivo.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
Passar um array para um função por valor não irá mais resetar o
|
||||
ponteiro interno do array para acessos na array realizados dentro da
|
||||
função. Em outras palavras, no PHP 4 se você passar uma array para uma
|
||||
função, seu ponteiro interno dentro da função será
|
||||
resetado, enquanto que no PHP 5, quando você passa uma array para uma função, o
|
||||
ponteiro dela dentro da função será o mesmo quando for passada
|
||||
para a função.
|
||||
</simpara>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>
|
||||
<example>
|
||||
<title><function>strrpos</function> e <function>strripos</function> agora usam todo o texto como
|
||||
busca (needle)</title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
var_dump(strrpos('ABCDEF','DEF')); //int(3)
|
||||
|
||||
var_dump(strrpos('ABCDEF','DAF')); //bool(false)
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
</para>
|
||||
<para>
|
||||
<example>
|
||||
<title>Um objeto sem propriedades não será mais considerado "vazio"</title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
class test { }
|
||||
$t = new test();
|
||||
|
||||
var_dump(empty($t)); // echo bool(false)
|
||||
|
||||
if ($t) {
|
||||
// Será executado
|
||||
}
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
</para>
|
||||
<para>
|
||||
<example>
|
||||
<title>Em alguns casos classes devem ser declaradas antes de serem usadas</title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
|
||||
//funciona sem erros:
|
||||
$a = new a();
|
||||
class a {
|
||||
}
|
||||
|
||||
|
||||
//lança um erro:
|
||||
$a = new b();
|
||||
|
||||
interface c{
|
||||
}
|
||||
class b implements c {
|
||||
}
|
||||
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="migration5.cli-cgi">
|
||||
<title>CLI e CGI</title>
|
||||
<para>
|
||||
No PHP 5 teve algumas mudanças nos nomes de arquivos CLI e CGI. No PHP 5, a
|
||||
versão CGI foi renomeada para <filename>php-cgi.exe</filename> (anteriormente era
|
||||
<filename>php.exe</filename>) e a versão CLI agora está no diretório
|
||||
principal (anteriormente estava em <filename>cli/php.exe</filename>).
|
||||
</para>
|
||||
<para>
|
||||
No PHP 5 foi adicionado um novo modo:
|
||||
<filename>php-win.exe</filename>. Ele é igual à versão CLI, exceto
|
||||
que o php-win não exibe nenhum e não provê um console (não há uma "janela
|
||||
dos" na tela). Este comportamento é similar ao php-gtk.
|
||||
</para>
|
||||
<para>
|
||||
No PHP 5, a versão CLI será irá popular as variáveis globais
|
||||
<varname>$argv</varname> e <varname>$argc</varname> independente
|
||||
de qualquer diretiva setada no &php.ini;. Mesmo tendo
|
||||
<link linkend="ini.register-argc-argv">register_argc_argv</link> setado para
|
||||
<literal>off</literal> não afetará a CLI.
|
||||
</para>
|
||||
<para>
|
||||
Veja também a <link linkend="features.commandline">referência de linha de
|
||||
comando</link>.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="migration5.configuration">
|
||||
<title>Migrando Arquivos de Configuração</title>
|
||||
<para>
|
||||
Desde que os módulos ISAPI mudaram seus nomes, do php4xxx para php5xxx, você
|
||||
precisa fazer algumas alterações nos arquivos de configurações. Também houve
|
||||
mudanças nos nomes de arquivos na CLI e CGI. Por favor, consulte a <link
|
||||
linkend="migration5.cli-cgi">sessão correspondente</link> para mais
|
||||
informações.
|
||||
</para>
|
||||
<para>
|
||||
Migrar a configuração do Apache é extremamente simples. veja um exemplo abaixo
|
||||
para verificar as mudanças que você deve fazer:
|
||||
<example>
|
||||
<title>Migrando arquivos de configuração do Apache para o PHP 5</title>
|
||||
<programlisting role="apache-conf">
|
||||
<![CDATA[
|
||||
# mude essa linha:
|
||||
LoadModule php4_module /php/sapi/php4apache2.dll
|
||||
|
||||
# para essa:
|
||||
LoadModule php5_module /php/php5apache2.dll
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
</para>
|
||||
<para>
|
||||
Se o seu servidor web estiver rodando o PHP no modo CGI, você deve notar que
|
||||
a versão CGI teve seu nome alterado de <filename>php.exe</filename> para
|
||||
<filename>php-cgi.exe</filename>.
|
||||
No Apache, você deve fazer algo parecido com isso:
|
||||
<example>
|
||||
<title>Migrando os arquivos de configuração do Apache para o PHP 5, no modo CGI</title>
|
||||
<programlisting role="apache-conf">
|
||||
<![CDATA[
|
||||
# mudar essa linha:
|
||||
Action application/x-httpd-php "/php/php.exe"
|
||||
|
||||
# para essa linha:
|
||||
Action application/x-httpd-php "/php/php-cgi.exe"
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
</para>
|
||||
<para>
|
||||
Nos outros servidores web você precisa mudar os nomes dos módulos CGI
|
||||
ou ISAPI.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="migration5.functions">
|
||||
<title>Novas Funções</title>
|
||||
<para>
|
||||
No PHP 5 existem algumas novas funções. Aqui está uma lista delas:
|
||||
</para>
|
||||
<para><link linkend="ref.array">Arrays</link>:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>array_combine</function> - Cria um array usando um array para chaves
|
||||
e outro array para valores
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>array_diff_uassoc</function> - Computa a diferença de
|
||||
arrays com checagem adicional de índice que é realizada por uma função de callback
|
||||
fornecida pelo usuário
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>array_udiff</function> - Computa a diferença entre arrays
|
||||
usando uma função de callback para comparação dos dados
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>array_udiff_assoc</function> - Computa a diferença
|
||||
de array com verificação adicional de índices. Os valores são comparados
|
||||
usando uma função de callback
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>array_udiff_uassoc</function> - Computa a diferença de
|
||||
arrays com verificação adicional de índices. Os valores são comparados
|
||||
usando uma função de callback. Os índices também são comparados utilizando uma função de callback.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>array_walk_recursive</function> - Aplica uma função definida pelo usuário
|
||||
recursivamente para cada item de uma array
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>array_uintersect_assoc</function> - Computa a intersecção de
|
||||
arrays com verificação adicional de índice. Os valores são comparados
|
||||
usando uma função de callback.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>array_uintersect_uassoc</function> - Computa a intersecção de
|
||||
arrays com verificação adicional de índice. Tanto os valores quanto os índices são comparados
|
||||
usando funções de callback separadas.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>array_uintersect</function> - Computa a intersecção de arrays.
|
||||
Os valores são comparados usando uma função de callback.
|
||||
</simpara>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para><link linkend="ref.ibase">InterBase</link>:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>ibase_affected_rows</function> - Returna o número de registros
|
||||
que foram afetados pelo query anterior
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>ibase_backup</function> -Inicia uma tarefa de backup
|
||||
no gerenciador de serviços e retorna imediatamente
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>ibase_commit_ret</function> - Comita a transação sem
|
||||
fechá-la
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>ibase_db_info</function> - Solicita estatística sobre o
|
||||
banco de dados
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>ibase_drop_db</function> - Remover o banco de dados
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>ibase_errcode</function> - Retorna o código de erro
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>ibase_free_event_handler</function> - Cancela o registro de
|
||||
um manipulador de eventos
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>ibase_gen_id</function> - Incrementa o gerador e retorna
|
||||
o novo valor
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>ibase_maintain_db</function> - Executa o comando de manutenção
|
||||
no servidor do banco de dados
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>ibase_name_result</function> - Define um nome para um conjunto de resultados
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>ibase_num_params</function> - Retorna o número de parâmetros numa
|
||||
query preparada
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>ibase_param_info</function> - Retorna informações sobre os
|
||||
parâmetros de uma query preparada
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>ibase_restore</function> - Inicia uma tarefa de recuperação
|
||||
no gerenciador de serviços e retorna imediatamente
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>ibase_rollback_ret</function> - Faz um rollback na transação e
|
||||
retém o contexto da transação
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>ibase_server_info</function> - Solicita estatísticas sobre o
|
||||
servidor de banco de dados
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>ibase_service_attach</function> - Conecta no gerenciador de serviços
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>ibase_service_detach</function> - Desconecta do
|
||||
gerenciador de serviços
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>ibase_set_event_handler</function> - Registra uma função de callback
|
||||
para ser executada quando um evento é disparado
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>ibase_wait_event</function> - Espera pelo disparo de um evento
|
||||
pelo banco de dados
|
||||
</simpara>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para><link linkend="ref.iconv">iconv</link>:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>iconv_mime_decode</function> - Decodifica um campo de cabeçalho MIME
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>iconv_mime_decode_headers</function> - decodifica múltiplos campos de um cabeçalho MIME
|
||||
de uma única vez.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>iconv_mime_encode</function> - Compõe um campo do cabeçalho MIME
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>iconv_strlen</function> - Retorna o total de caracteres de uma
|
||||
string
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>iconv_strpos</function> - Encontra a posicão da primeira ocorrência
|
||||
do item no conjunto
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>iconv_strrpos</function> - Encontra a posicão da última ocorrência
|
||||
do item no conjunto
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>iconv_substr</function> - Remove parte de uma string
|
||||
</simpara>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para><link linkend="ref.stream">Streams</link>:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>stream_copy_to_stream</function> - Copia valores de um stream
|
||||
para outro
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>stream_get_line</function> - Pega a linha do recurso de stream até o
|
||||
delimitador passado
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>stream_socket_accept</function> - Aceita a conexão em um
|
||||
socket criado por <function>stream_socket_server</function>
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>stream_socket_client</function> - Abre a internet ou domínio Unix
|
||||
numa conexão socket
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>stream_socket_get_name</function> - Recupera o nome de sockets locais
|
||||
ou remotos
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>stream_socket_recvfrom</function> - Recebe dados de um
|
||||
socket, conectado ou não
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>stream_socket_sendto</function> - Manda uma mensagem para um socket,
|
||||
se estiver conectado ou não
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>stream_socket_server</function> - Cria uma Internet ou domínio Unix
|
||||
servidor de socket
|
||||
</simpara>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para><link linkend="ref.datetime">Relacionado a Data e Hora</link>:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>idate</function> - Formata a hora/data local como inteiro
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>date_sunset</function> - Hora do pôr do sol para um determinado dia e
|
||||
localização
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>date_sunrise</function> - Hora do nascer do sol para um determinado dia e
|
||||
localização
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>time_nanosleep</function> - Atrasar por um determinado número de segundos ou
|
||||
nanosegundos
|
||||
</simpara>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para><link linkend="ref.strings">Strings</link>:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>str_split</function> - Converte uma string para uma array
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>strpbrk</function> - Procura na string por qualquer um dos conjuntos
|
||||
de caracteres passados
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>substr_compare</function> - Opcionalmente "Binary safe", comparação " case
|
||||
insensitive" de duas strings de uma posição até o comprimento
|
||||
de caracteres
|
||||
</simpara>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>Outros:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>convert_uudecode</function> - decodifica uma string codificada com uuencoded
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>convert_uuencode</function> - Codifica uma string
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>curl_copy_handle</function> - Copia o manipulador cURL com
|
||||
todas as suas preferências
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>dba_key_split</function> - Divide uma chave em representação de string
|
||||
em representação de array
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>dbase_get_header_info</function> - Obtêm a informação do cabeçalho
|
||||
de um banco de dados dBase
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>dbx_fetch_row</function> - Busca registros de um resultado de query
|
||||
que teve a flag <constant>DBX_RESULT_UNBUFFERED</constant> setada
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>fbsql_set_password</function> - Muda a senha de um determinado
|
||||
usuário
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>file_put_contents</function> - Escreve a string no arquivo
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>ftp_alloc</function> - Aloca espaço para o arquivo ser
|
||||
enviado
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>get_declared_interfaces</function> - Retorna uma arrau com toda as
|
||||
interfaces declaradas
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>get_headers</function> - Busca todos os cabeçalhos enviados para o
|
||||
servidor em resposta a uma requisição HTTP
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>headers_list</function> - Retorna uma lista de cabeçalhos de resposta
|
||||
enviados (ou prontos para serem enviados)
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>http_build_query</function> - Gera uma string de consulta codificada como URL
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>image_type_to_extension</function> - Obtêm a extensão do arquivos para
|
||||
image-type retornada por <function>getimagesize</function>,
|
||||
<function>exif_read_data</function>,
|
||||
<function>exif_thumbnail</function>,
|
||||
<function>exif_imagetype</function>
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>imagefilter</function> - Aplicada um filtro em uma imagem usando
|
||||
argumentos customizados
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>imap_getacl</function> - Obtêm o ACL para uma determinada caixa de email
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>ldap_sasl_bind</function> - Vincula para o diretório LDAP usando SASL
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>mb_list_encodings</function> - Retorna um array com todos
|
||||
codificações suportados
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>pcntl_getpriority</function> - Obtêm a prioridade de qualquer
|
||||
processo
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>pcntl_wait</function> - Aguarda ou retorna o estado de uma
|
||||
chamada de sistema de um filho definido por <literal>waitpid()</literal>\
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>pg_version</function> - Retorna um array com cliente, protocolo
|
||||
e versão do servidor (quando disponível)
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>php_check_syntax</function> - Verifica a sintaxe de um
|
||||
arquivo específico
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>php_strip_whitespace</function> - Retorna o fonte sem comentários
|
||||
e espaços em branco
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>proc_nice</function> - Muda a prioridade do processo
|
||||
atual
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>pspell_config_data_dir</function> - Muda a localização dos
|
||||
arquivos de idiomas
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>pspell_config_dict_dir</function> - Muda a localização da
|
||||
lista de palavras principais
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>setrawcookie</function> - Envia um cookie sem a codificação de URL
|
||||
nos valores
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>scandir</function> - Lista arquivos e diretórios dentro
|
||||
de um caminho especificado
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>snmp_read_mib</function> - Lê e processa arquivos MIB dentro
|
||||
da árvore MIB ativa
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<function>sqlite_fetch_column_types</function> - Retorna uma array de
|
||||
tipos de colunas de uma tabela em particular
|
||||
</simpara>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<note>
|
||||
<para>
|
||||
A extensão <link linkend="ref.tidy">Tidy</link> mudou completamente a sua
|
||||
API.
|
||||
</para>
|
||||
</note>
|
||||
</section>
|
||||
|
||||
|
||||
<section xml:id="migration5.newconf">
|
||||
<title>Novas Diretivas</title>
|
||||
<para>
|
||||
Existem algumas diretivas novas no &php.ini; introduzidas no PHP 5. Aqui está uma
|
||||
lista delas:
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<link linkend="ini.mail.force_extra_parameters">mail.force_extra_parameters</link> -
|
||||
Força a adição de parâmetros específicos
|
||||
para serem passados como parâmetros adicionais no binário sendmail.
|
||||
Estes parâmetros sempre serão substituídos pelo valor do quinto parâmetro da função
|
||||
<function>mail</function>, mesmo em modo de segurança.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<link linkend="ini.register-long-arrays">register_long_arrays</link> -
|
||||
autoriza/desautoriza o PHP a registrar as obsoletas <varname>$HTTP_*_VARS</varname>
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<link linkend="ini.session.hash-function">session.hash_function</link> -
|
||||
seleciona uma função de hash (MD5 or SHA-1)
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<link
|
||||
linkend="ini.session.hash-bits-per-character">session.hash_bits_per_character</link>
|
||||
- define quantos bits são armazenados em cada caracter quando converte o
|
||||
valor do hash binário para algo legível (de 4 a 6)
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<link linkend="ini.zend.ze1-compatibility-mode">zend.ze1_compatibility_mode</link>
|
||||
- Habilita o modo de compatibilidade com o Zend Engine 1 (PHP 4)
|
||||
</simpara>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
|
||||
<section xml:id="migration5.databases">
|
||||
<title>Bancos de Dados</title>
|
||||
<para>
|
||||
Existem algumas mudanças no PHP 5 a respeito de bancos de dados (MySQL and SQLite).
|
||||
</para>
|
||||
<para>
|
||||
No PHP 5 as bibliotecas do cliente MySQL não são nativas, por problemas de licença
|
||||
e manutenção. O MySQL continua sendo suportado tendo como única
|
||||
mudança que o suporte ao MySQL não é mais ativado por
|
||||
<emphasis>padrão</emphasis> no PHP 5. Isso basicamente significa que
|
||||
o PHP não inclui a opção <option role="configure">--with-mysql</option>
|
||||
na linha de <link linkend="configuration">configuração</link>, de forma
|
||||
que agora você deve fazer isso manualmente ao compilar o PHP. Usuários do Windows
|
||||
precisarão editar o &php.ini; e habilitar a DLL <filename>php_mysql.dll</filename>.
|
||||
Como no PHP 4 tal DLL não existe, estando simplesmente incluída nos binários
|
||||
PHP do Windows.
|
||||
</para>
|
||||
<para>
|
||||
Existe também uma nova extensão, <link linkend="ref.mysqli">MySQLi (Improved
|
||||
MySQL)</link>, que foi desenvolvida para trabalhar com MySQL 4.1 e superiores.
|
||||
</para>
|
||||
<para>
|
||||
A partir do PHP 5, a extensão SQLite é
|
||||
embutida no PHP. SQLite é um banco de dados SQL embutido e não uma biblioteca
|
||||
cliente usada para conectar em um grande servidor de banco de dados (como MySQL ou
|
||||
PostgreSQL). A biblioteca SQLite lê e escreve diretamente nos arquivos
|
||||
do banco de dados no disco.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
|
||||
<section xml:id="migration5.oop">
|
||||
<title>Novo Modelo de Objetos</title>
|
||||
<para>
|
||||
No PHP 5 há um novo Modelo de Objetos. A forma como o PHP trata os objetos
|
||||
foi completamente reescrita, permitindo uma melhor performance e mais recursos.
|
||||
Em versões anteriores do PHP, objetos eram tratados como tipos primitivos
|
||||
(por exemplo inteiros e strings). A desvantagem desse método é que
|
||||
semânticamento todo o objeto é copiado quando uma variável é definida, ou
|
||||
passado como parâmetro para um método. Na nova abordagem, objetos são
|
||||
referenciados por identificadores, e não por valores (pode-se pensar como um manipulador
|
||||
para identificadores de objetos).
|
||||
</para>
|
||||
<para>
|
||||
Muitos programadores PHP não estão cientes das peculiaridades do antigo
|
||||
modelo de objetos e, consequentemente, a maioria das aplicações PHP funcionarão
|
||||
normalmente, ou com poucas modificações.
|
||||
</para>
|
||||
<para>
|
||||
O novo Modelo de Objetos está documentado na <link
|
||||
linkend="language.oop5">Referência da Linguagem</link>.
|
||||
</para>
|
||||
<para>
|
||||
No PHP 5, funções com o nome da classe é executada como construtor
|
||||
somente se for definida na mesma classe. No PHP 4, ela é executada mesmo se for definida
|
||||
em uma classe filha.
|
||||
</para>
|
||||
<para>
|
||||
Veja mais sobre a diretiva <link linkend="ini.zend.ze1-compatibility-mode">
|
||||
zend.ze1_compatibility_mode</link> para compatibilidade com o
|
||||
PHP 4.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="migrating5.errorrep">
|
||||
<title>Relatório de Erros</title>
|
||||
<para>
|
||||
A partir do PHP 5 a constante de relatório de erros
|
||||
<constant>E_STRICT</constant> está disponível, com o valor
|
||||
<literal>2048</literal>. Quando habilitado, serão exibidas
|
||||
mensagens para alertar sobre uso de código que está obsoleto ou que
|
||||
pode não estar seguro no futuro.
|
||||
</para>
|
||||
<note>
|
||||
<simpara>
|
||||
<constant>E_ALL</constant> não inclui <constant>E_STRICT</constant>,
|
||||
portanto não está habilitado por padrão. Você deve setar explicitamente
|
||||
o nível do relatório de errros para incluir o <constant>E_STRICT</constant> e
|
||||
visualizar as mensagens.
|
||||
</simpara>
|
||||
</note>
|
||||
<para>
|
||||
Veja <link linkend="errorfunc.constants">Constantes Pré-Definidas</link> para mais informações.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
</appendix>
|
||||
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
sgml-omittag:t
|
||||
sgml-shorttag:t
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-indent-step:1
|
||||
sgml-indent-data:t
|
||||
indent-tabs-mode:nil
|
||||
sgml-parent-document:nil
|
||||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||||
sgml-exposed-tags:nil
|
||||
sgml-local-catalogs:nil
|
||||
sgml-local-ecat-files:nil
|
||||
End:
|
||||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||||
vim: et tw=78 syn=sgml
|
||||
vi: ts=1 sw=1
|
||||
-->
|
||||
@@ -1,767 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 87a2f30351e8939c82b1b5ecd46fcccedd3ad7c2 Maintainer: ae Status: ready --><!-- CREDITS: bruno@disvolvi.com,royopa,fabioluciano,adiel,ae -->
|
||||
<appendix xml:id="migration51" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Migrando do PHP 5.0.x para PHP 5.1.x</title>
|
||||
<para>
|
||||
&manual.migration.seealso;
|
||||
<link linkend="migration5">5.0.x</link>,
|
||||
<link linkend="migration52">5.2.x</link>,
|
||||
<link linkend="migration53">5.3.x</link>,
|
||||
<link linkend="migration54">5.4.x</link>,
|
||||
<link linkend="migration55">5.5.x</link> e
|
||||
<link linkend="migration56">5.6.x</link>.
|
||||
</para>
|
||||
|
||||
<section xml:id="migration51.changes">
|
||||
<title>Principais funcionalidades do PHP 5.1.x</title>
|
||||
<para>
|
||||
Algumas das principais características do PHP 5.1.x incluem:
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Uma completa reescrita do código de manipulação de dados, com melhorias no suporte do timezone.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Um significante ganho de performance comparado ao PHP 5.0.X.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Extensão PDO agora vem ativa por padrão.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Mais de 30 novas funções em várias extensões e funcionalidades internas.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Mais de 400 correções de bugs.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
|
||||
<section xml:id="migration51.references">
|
||||
<title>Modificações na manipulação de referencias</title>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
<link linkend="migration51.references-overview">Visão geral</link>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link linkend="migration51.references-fails">Código que funcionava do PHP 4.3.X, mas agora falha</link>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link linkend="migration51.references-error">Código que funcionava do PHP 4.3.X, mas agora dispara um erro</link>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link linkend="migration51.references-works">Código que funcionava no PHP 4.3.x, mas agora funciona</link>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link linkend="migration51.references-didnotwork">Código que deveria ter funcionado no PHP 5.0.x</link>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link linkend="migration51.references-warnings">Avisos que vem e vão</link>
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<section xml:id="migration51.references-overview">
|
||||
<title>Visão geral</title>
|
||||
<para>
|
||||
Do ponto de vista do desenvolvedor PHP, as mudanças que mais impacta o código legado é a maneira que as referências são manipuladas em todas as versões posteriores ao PHP 4.4.0.
|
||||
</para>
|
||||
<para>
|
||||
Até a versão 4.3, era possível enviar, definir ou retornar variáveis por referência o que deveria ser retornado por valor, como uma constante, um valor temporário (ex. o resultado de uma expressão), ou o resultado de uma função que retorna um valor, como abaixo:
|
||||
</para>
|
||||
<informalexample>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$foo = "123";
|
||||
|
||||
function return_value() {
|
||||
global $foo;
|
||||
return $foo;
|
||||
}
|
||||
|
||||
$bar = &return_value();
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</informalexample>
|
||||
<para>
|
||||
Embora esse código deveria funcionar como esperado abaixo da versão 4.3 do PHP, na maioria dos casos o resultado é indefinido. A Zend Engine não pode efetivamente corrigir um desses valores como referência. Esse bug pode e levava a vários problemas de memória, particularmente onde a base de código é muito grande.
|
||||
</para>
|
||||
<para>
|
||||
No PHP 4.4.0, PHP 5.0.4 e todos as versões subsequentes, a Engine foi corrigida para 'saber' quando a operação de referência é usada em um valor que não deveria ser referenciada. O valor atual agora é usado nesses casos, e um alerta é emitido. Esse alerta toma a forma de um
|
||||
<constant>E_NOTICE</constant> no PHP 4.4.0 e superior, e
|
||||
<constant>E_STRICT</constant> no PHP 5.0.4 e superior.
|
||||
</para>
|
||||
<para>
|
||||
Código que pode potencialmente ocasionar problemas de memória agora não pode mais. Entretanto, algum código legado pode funcionar diferente por causa disso.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="migration51.references-fails">
|
||||
<title>Código que funcionava no PHP 4.3, mas agora falha</title>
|
||||
<informalexample>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
function func(&$arraykey) {
|
||||
return $arraykey; // function returns by value!
|
||||
}
|
||||
|
||||
$array = array('a', 'b', 'c');
|
||||
foreach (array_keys($array) as $key) {
|
||||
$y = &func($array[$key]);
|
||||
$z[] =& $y;
|
||||
}
|
||||
|
||||
var_dump($z);
|
||||
?>
|
||||
<]]>
|
||||
</programlisting>
|
||||
<para>
|
||||
Rodando o código acima em qualquer versão do PHP que precede a correção da referência irá retornar a seguinte saída:
|
||||
</para>
|
||||
<screen>
|
||||
<![CDATA[
|
||||
array(3) {
|
||||
[0]=>
|
||||
&string(1) "a"
|
||||
[1]=>
|
||||
&string(1) "b"
|
||||
[2]=>
|
||||
&string(1) "c"
|
||||
}
|
||||
]]>
|
||||
</screen>
|
||||
<para>
|
||||
Após a correção da referência, o mesmo código irá retornar o seguinte resultado:
|
||||
</para>
|
||||
<screen>
|
||||
<![CDATA[
|
||||
array(3) {
|
||||
[0]=>
|
||||
&string(1) "c"
|
||||
[1]=>
|
||||
&string(1) "c"
|
||||
[2]=>
|
||||
&string(1) "c"
|
||||
}
|
||||
]]>
|
||||
</screen>
|
||||
</informalexample>
|
||||
<para>
|
||||
Isso ocorre porque a função <literal>func()</literal>
|
||||
é por valor. O valor de <varname>$y</varname> é redefinido, e a referência é preservada de <varname>$z</varname>. Antes da correção, o valor foi atribuído por referência, levando <varname>$y</varname>
|
||||
para ser re-ligada a cada a cada atribuíção. A tentativa de ligar a cada valor de referência foi a causa do problema de memória.
|
||||
</para>
|
||||
<para>
|
||||
O código pode ser feito para funcionar da mesma forma em ambas as versões do PHP antes e depois da correção. A definição da <literal>func()</literal> pode ser alterada para retornar por referência, ou a definição da referência pode ser removida do resultado da <literal>func()</literal>.
|
||||
</para>
|
||||
<informalexample>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
function func() {
|
||||
return 'function return';
|
||||
}
|
||||
|
||||
$x = 'original value';
|
||||
$y =& $x;
|
||||
$y = &func();
|
||||
echo $x;
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</informalexample>
|
||||
<para>
|
||||
No PHP 4.3 <varname>$x</varname> pode ser 'valor original', onde depois das alterações deverá ser 'o retorno da função' - lembre-se que onde a função não retorna por referência, a definição da referência é convertida em uma definição regular. Novamente, isso pode ser trazido a uma base comum, tanto forçando <literal>func()</literal> para retornar por referência, quanto eliminando a definição por referência.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="migration51.references-error">
|
||||
<title>Código que funcionava no PHP 4.3.x, mas agora dispara um erro</title>
|
||||
<informalexample>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
class Foo {
|
||||
|
||||
function getThis() {
|
||||
return $this;
|
||||
}
|
||||
|
||||
function destroyThis() {
|
||||
$bar =& $this->getThis();
|
||||
}
|
||||
}
|
||||
|
||||
$bar = new Foo();
|
||||
$bar->destroyThis();
|
||||
var_dump($bar);
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</informalexample>
|
||||
<para>
|
||||
No PHP 5.0.3, <varname>$bar</varname> se torna <constant>NULL</constant> ao invés de retornar um objeto. Isso acontece porque
|
||||
<literal>getThis()</literal> retorna por valor, mas o valor aqui é definido por referência. Embora isso agora funcione da forma esperada, é na verdade um código inválido e irá disparar um <constant>E_NOTICE</constant>
|
||||
no PHP 4.4 e inferior ou um <constant>E_STRICT</constant> no PHP 5.0.4 e superior.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="migration51.references-works">
|
||||
<title>Código que funcionava no PHP 4.3.x, mas agora funciona</title>
|
||||
<informalexample>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
function &f() {
|
||||
$x = "foo";
|
||||
var_dump($x);
|
||||
print "$x\n";
|
||||
return($a);
|
||||
}
|
||||
|
||||
for ($i = 0; $i < 3; $i++) {
|
||||
$h = &f();
|
||||
}
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
<para>
|
||||
No PHP 4.3 a terceira linha <function>var_dump</function> retorna
|
||||
<constant>NULL</constant>, por causa do retorno de um valor não inicializado por referência. Esse cógido é valido no PHP 5.0.4 e superior, mas dispara um erro em versões mais antigas do PHP.
|
||||
</para>
|
||||
</informalexample>
|
||||
<informalexample>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$arr = array('a1' => array('alfa' => 'ok'));
|
||||
$arr =& $arr['a1'];
|
||||
echo '-'.$arr['alfa']."-\n";
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
<para>
|
||||
Antes do PHP 5.0.5, não era possível atribuír um array por referência dessa maneira. Agora é.
|
||||
</para>
|
||||
</informalexample>
|
||||
</section>
|
||||
|
||||
<section xml:id="migration51.references-didnotwork">
|
||||
<title>Código que <literal>deveria ter funcionado</literal> abaixo do PHP 5.0.x</title>
|
||||
<para>
|
||||
Há um conjunto de bugs reportados abaixo do PHP 5.0.5 que antes das correções da referência que agora 'funcionam'. Entretanto, em ambos os casos erros são disparados pelo PHP 5.1.x, porque o código estava inválido desde o início. Retornar valores por referência usando <literal>self::</literal> na maioria dos casos mas dispara um <constant>E_STRICT</constant> alerta,
|
||||
e apesar de seu tamanho poder variar quando atribuído por referência para um objeto sobrecarregado, você verá um <constant>E_ERROR</constant>
|
||||
quando você tentar, mesmo onde a própria atribuição parece funcionar.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="migration51.references-warnings">
|
||||
<title>Avisos que vem e vão</title>
|
||||
<para>
|
||||
Chamadas aninhadas para funções que retornam por referência são códigos válidos para ambas as versões de PHP 4.3.x e PHP 5.1.x, mas disparam um aviso <constant>E_NOTICE</constant> ou <constant>E_STRICT</constant> nessas versões de PHP.
|
||||
</para>
|
||||
<informalexample>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
function & foo() {
|
||||
$var = 'ok';
|
||||
return $var;
|
||||
}
|
||||
|
||||
function & bar() {
|
||||
return foo();
|
||||
}
|
||||
|
||||
$a =& bar();
|
||||
echo "$a\n";
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</informalexample>
|
||||
</section>
|
||||
</section>
|
||||
<section xml:id="migration51.reading">
|
||||
<title>Lendo arrays</title>
|
||||
<informalexample>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
class XmlTest {
|
||||
|
||||
function test_ref(&$test) {
|
||||
$test = "ok";
|
||||
}
|
||||
|
||||
function test($test) { }
|
||||
|
||||
function run() {
|
||||
$ar = array();
|
||||
$this->test_ref($ar[]);
|
||||
var_dump($ar);
|
||||
$this->test($ar[]);
|
||||
}
|
||||
}
|
||||
|
||||
$o = new XmlTest();
|
||||
$o->run();
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</informalexample>
|
||||
<para>
|
||||
Ele deve sempre disparar um fatal <constant>E_ERROR</constant>,
|
||||
porque o array não pode ser usado para leitura em PHP. Isso é um código inválido em PHP 4.4.2 e PHP 5.0.5 ou superior.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="migration51.integer-parameters">
|
||||
<title>Valores inteiros em parâmetros de função</title>
|
||||
<para>
|
||||
Com a vinda do PHP 5.0.x, uma nova API de parsing de parâmetros foi introduzida onde está sendo usada por um grande número de funções PHP. Em todas as versões do PHP entre 5.0.x e 5.1.x, a manipulação de valores inteiros era bem restrita e rejeitava valores numéricos não bem formatados quando uma função PHP esperava um inteiro. Essas verificações agora foram simplificadas para suportar formatos de string numéricas como " 123" e "123 ", e não irão mais falhar como acontecia em versões anterioreres a PHP 5.0.x. Por outro lado, para garantir a segurança do código e a validação da entrada, as funções PHP agora irão emitir um <constant>E_NOTICE</constant> quando essas strings forem passadas como inteiros.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="migration51.oop">
|
||||
<title>Mudanças em classes e objetos</title>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
<link linkend="migration51.oop-functions"><literal>instanceof</literal>,
|
||||
<literal>is_a()</literal>, <literal>is_subclass_of()</literal> and
|
||||
<literal>catch</literal></link>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link linkend="migration51.oop-methods">Métodos privados abstratos</link>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link linkend="migration51.oop-modifiers">Modificadores de acesso em interfaces</link>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link linkend="migration51.oop-inheritance">Mudanças nas regras de herança</link>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link linkend="migration51.oop-constants">Constantes de classe</link>
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<section xml:id="migration51.oop-functions">
|
||||
<title><literal>instanceof</literal>, <literal>is_a()</literal>,
|
||||
<literal>is_subclass_of()</literal> and <literal>catch</literal></title>
|
||||
<para>
|
||||
No PHP 5.0, <literal>is_a()</literal> foi depreciada e substituída pelo operador <literal>instanceof</literal>. Existem alguns prolbemas com a implementação inicial do <literal>instanceof</literal>, que usou o <literal>__autoload()</literal> para buscar missing classes.
|
||||
Se a classe não estava presente, <literal>instanceof</literal> irá disparar um fatal <constant>E_ERROR</constant> devido a falha do <literal>__autoload()</literal> em encontrar a classe. O mesmo comportamento ocorrido no operador <literal>catch</literal> e na função <literal>is_subclass_of()</literal>, por essa mesma razão.
|
||||
</para>
|
||||
<para>
|
||||
Nenhuma dessas funções ou chamadas de operadores <literal>__autoload()</literal> no PHP 5.1.x, e <literal>class_exists()</literal> foram soluções alternativas usadas no código escrito para PHP 5.0.x, enquanto não causava problemas dessa maneira, não são mais necessários.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="migration51.oop-methods">
|
||||
<title>Métodos privados abstratos</title>
|
||||
<para>
|
||||
Métodos privados abstratos foram suportados entre o PHP 5.0.0 e PHP 5.0.4, mas eles foram desabilitados no escopo onde o comportamento <literal>private</literal> e <literal>abstract</literal> são mutualmente exclusivos.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="migration51.oop-modifiers">
|
||||
<title>Modificadores de acesso em interfaces</title>
|
||||
<para>
|
||||
Versões abaixo do PHP 5.0, declaração de funções em interfaces eram tratadas exatamente da mesma maneira que declaração de funções em classes. Isto não era caso desde outubro de 2004, onde apontava apenas o modificador de acesso <literal>public</literal>
|
||||
era permitido nas declarações de funções de interface. Desde abril de 2005 - que antecede a versão do PHP 5.0b1 - o modificador <literal>static</literal> também foi permitido. Entretanto, os modificadores <literal>protected</literal> e <literal>private</literal> não irão disparar um <constant>E_ERROR</constant>, bem como <literal>abstract</literal>. Note que essa mudança não irá afetar o seu código existente, como nenhum desses modificadores fazem sentido num contexto de interface.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="migration51.oop-inheritance">
|
||||
<title>Mudanças nas regras de herança</title>
|
||||
<para>
|
||||
Em versões anteriores ao PHP 5.0, era possível ter a declaração da função em uma classe derivada que não corresponde com a declaração da mesma função na classe base, ex.
|
||||
</para>
|
||||
<informalexample>
|
||||
<para>
|
||||
Esse código irá causar um erro <constant>E_STRICT</constant> para ser emitido em versões anteriores ao PHP 5.1.x.
|
||||
</para>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
class Base {
|
||||
function &return_by_ref() {
|
||||
$r = 1;
|
||||
return $r;
|
||||
}
|
||||
}
|
||||
|
||||
class Derived extends Base {
|
||||
function return_by_ref() {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</informalexample>
|
||||
</section>
|
||||
|
||||
<section xml:id="migration51.oop-constants">
|
||||
<title>Constantes de classe</title>
|
||||
<para>
|
||||
Em versões abaixo do PHP 5.0.x, o código a seguir era válido:
|
||||
</para>
|
||||
<informalexample>
|
||||
<para>
|
||||
Em versões abaixo do PHP 5.1.x, redefinir a constante de uma classe irá disparar um fatal <constant>E_ERROR</constant>.
|
||||
</para>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
class test {
|
||||
const foobar = 'foo';
|
||||
const foobar = 'bar';
|
||||
}
|
||||
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</informalexample>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section xml:id="migration51.extensions">
|
||||
<title>Extensões</title>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
<link linkend="migration51.extensions-gone">Extensões removidas do core do PHP</link>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link linkend="migration51.extensions-constants">Constantes de classe nas novas extensões do PHP 5.1.x</link>
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<section xml:id="migration51.extensions-gone">
|
||||
<title>Extensões removidas do core do PHP</title>
|
||||
<para>
|
||||
Uma das primeiras coisas que você vai gostar de ver quando baixar o PHP 5.1.x é o desaparecimento de algumas extensões antigas. Essas extensões que ainda são ativamente mantidas estão disponíveis na PHP Extension Community Library (PECL), no
|
||||
<link xlink:href="&url.pecl;">&url.pecl;</link>.
|
||||
</para>
|
||||
<table>
|
||||
<title>Extensões removidas</title>
|
||||
<tgroup cols="2">
|
||||
<thead>
|
||||
<row>
|
||||
<entry>Extensões</entry>
|
||||
<entry>Alternativa/Status</entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody>
|
||||
<row>
|
||||
<entry>ext/cpdf</entry>
|
||||
<entry>pecl/pdflib</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><link linkend="ref.dbx">ext/dbx</link></entry>
|
||||
<entry>pecl/dbx</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><link linkend="ref.dio">ext/dio</link></entry>
|
||||
<entry>pecl/dio</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>ext/fam</entry>
|
||||
<entry>Não ativamente mantida</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><link linkend="ref.ingres">ext/ingres_ii</link></entry>
|
||||
<entry>pecl/ingres</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>ext/ircg</entry>
|
||||
<entry>Não ativamente mantida</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>ext/mcve</entry>
|
||||
<entry>pecl/mcve</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>ext/mnogosearch</entry>
|
||||
<entry>Não ativamente mantida</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>ext/oracle</entry>
|
||||
<entry>
|
||||
<link linkend="ref.oci8">ext/oci8</link> or
|
||||
<link linkend="ref.pdo-oci">ext/pdo_oci</link>
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>ext/ovrimos</entry>
|
||||
<entry>Não ativamente mantida</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>ext/pfpro</entry>
|
||||
<entry>Não ativamente mantida</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>ext/w32api</entry>
|
||||
<entry><link xlink:href="&url.pecl.package;ffi">pecl/ffi</link></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>ext/yp</entry>
|
||||
<entry>Não ativamente mantida</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>ext/activescript</entry>
|
||||
<entry>
|
||||
<link xlink:href="&url.pecl.package;activescript">pecl/activescript</link>
|
||||
</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
<para>
|
||||
Módulos na PECL que não são ativamente mantidas (ex. não recebem suporte por algum tempo, não tem nenhum mantenedor ativo trabalhando neles atualmente e não tem nenhuma versão de pacote PECL), ainda estão disponíveis no SVN em <link xlink:href="&url.php.svn;pecl">&url.php.svn;pecl</link>.
|
||||
Entretanto, módulos PHP não lançados são nativamente não suportados e seu tamanho pode variar ao tentar instalá-lo ou usá-los.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="migration51.extensions-constants">
|
||||
<title>Constantes de classe nas novas extensões do PHP 5.1.x</title>
|
||||
<para>
|
||||
A API Zend Engine permite que desenvolvedores de extensão declarem constantes de classe em extensões orientadas a objetos. Novas extensões desenvolvidas para o PHP 5.1.x, incluindo <link linkend="ref.spl">SPL</link>,
|
||||
<link linkend="intro.pdo">PDO</link>,
|
||||
<link linkend="book.xmlreader">XMLReader</link> e
|
||||
<link linkend="ref.datetime">date</link>, tem suas constantes no formato <constant>PDO::CLASS_CONSTANT</constant> diferentemente do formato C <constant>PDO_CLASS_CONSTANT</constant> com o objetivo de minimizar a poluição de namespace global no PHP.
|
||||
</para>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section xml:id="migration51.datetime">
|
||||
<title>Suporte a Date/time</title>
|
||||
<para>
|
||||
O suporte a Date/time foi totalmente reescrito no PHP 5.1.x, e não utiliza mais as configurações de sistema para 'saber' o timezone em operação. Ao invés disso, irá utilizar na seguinte ordem:
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
A definição do timezone usando a função <function>date_default_timezone_set</function> (se não houver)
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
A variável de ambiente TZ (se não estiver vazia)
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
"magical" guess (se o sistema operacional suportar)
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Se nenhuma dessas opções forem bem sucedidas, UTC
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<informalexample>
|
||||
<para>
|
||||
Para assegurar precisão (e evitar um alerta <constant>E_STRICT</constant>), você precisará definir o seu timezone no <filename>php.ini</filename>
|
||||
usando o seguinte formato:
|
||||
</para>
|
||||
<para>
|
||||
date.timezone = America/Sao_Paulo
|
||||
</para>
|
||||
</informalexample>
|
||||
<para>
|
||||
Os timezones suportados são listados, nesse formato, no <link linkend="timezones">apêndize de timezones</link>.
|
||||
</para>
|
||||
<para>
|
||||
Também note que <function>strtotime</function> agora retorna &false; ao falhar, ao invés de -1.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="migration51.databases">
|
||||
<title>Mudanças no suporte a banco de dados</title>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
<link linkend="migration51.databases-pdo">Visão geral do PDO</link>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link linkend="migration51.databases-mysql">Mudanças no suporte ao MySQL</link>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link linkend="migration51.databases-sqlite">Mudanças no suporte ao SQLite</link>
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<section xml:id="migration51.databases-pdo">
|
||||
<title>Visão geral do PDO</title>
|
||||
<para>
|
||||
<link linkend="intro.pdo">PHP Data Objects (PDO)</link> foram
|
||||
introduzidos como uma extensão PECL em versões anteriores ao PHP
|
||||
5.0, e se tornaram parte do core do PHP na versão PHP 5.1.x. A
|
||||
extensão PDO disponibiliza uma interface consistente para acesso a banco de dados, e é usado paralelamente aos drivers PDO específicos para cada banco de dados. Cada driver também pode ter
|
||||
funções específicas próprias, mas a funcionalidade básica de acesso aos dados tais como consultas e busca de dados são
|
||||
cobertas por funções do PDO, usando o driver nomeado em
|
||||
<function>PDO::__construct</function>.
|
||||
</para>
|
||||
<para>
|
||||
Note que a extensão PDO. e seus drivers, destinam-se a ser construídos como extensões compartilhadas. Isso irá permitir atualizações diretas do PECL, sem forçá-lo a recompilar todo o PHP.
|
||||
</para>
|
||||
<para>
|
||||
No momento do lançamento da versão do PHP 5.1.x, o PDO está mais do que pronto para testes gerais e pode ser utilizado na maioria das situações.
|
||||
Entretanto, é importante entender que o PDO e seus drivers são
|
||||
relativamente novos e podem faltar certas características específicas; analise cuidadosamente o PDO antes de usá-lo em novos projetos.
|
||||
</para>
|
||||
<para>
|
||||
Código legado geralmente conta com extensões de banco de dados pré-existentes, que ainda são mantidas.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="migration51.databases-mysql">
|
||||
<title>Mudanças no suporte ao MySQL</title>
|
||||
<para>
|
||||
No PHP 4, MySQL 3 era suportado nativamente. Com o lançamento do PHP 5.0 houveram duas novas extensões do MySQL, chamadas 'mysql' e 'mysqli', que foram designadas para dar suporte ao MySQL < 4.1 e MySQL 4.1 e superiores, respectivamente. Com a introdução do PDO, que proprociona uma interface muito rápida para todas as APIs de banco de dados suportadas pelo PHP, o driver PDO_MYSQL pode suportar qualquer uma da versões atuais (MySQL 3, 4 or 5) de código PHP desenvolvido para PDO, dependendo da versão da biblioteca MySQL usada durante a compilação. As extensões antigas do MySQL continuam por razões de retrocompatibilidade, mas não vem habilitadas por padrão.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="migration51.databases-sqlite">
|
||||
<title>Mudanças no suporta ao SQLite</title>
|
||||
<para>
|
||||
No PHP 5.0.x, o suporte ao SQLite 2 foi fornecido pela extensão interna sqlite, que também está disponível como uma extensão do PECL no PHP 4.3 e PHP 4.4. Com a introdução od PDO, a extensão sqlite age como um driver 'sqlite2' para o PDO; é devido a isso que a extensão sqlite no PHP 5.1.x tem uma dependência sobre a extensão PDO.
|
||||
</para>
|
||||
<para>
|
||||
PHP 5.1.x disponibiliza várias alternativas de interface ao sqlite:
|
||||
</para>
|
||||
<para>
|
||||
A extensão do sqlite disponibiliza a "clássica" API procedural/OO sqlite que você deve ter usado em versões anteriores do PHP. Isto também disponibiliza o driver PDO
|
||||
'sqlite2', que permite você a acessar banco de dados SQLite 2 legados usando API PDO.
|
||||
</para>
|
||||
<para>
|
||||
PDO_SQLITE disponibiliza a versão 3 do driver 'sqlite'. A versão 3 do SQLite é muito superior a versão 2 do SQLite, mas os formatos de arquivo entre as as versões não são compatíveis.
|
||||
</para>
|
||||
<para>
|
||||
Se o seu projeto baseado em SQLite já foi desenvolvido e foi escrito em versões anteriores do PHP, então você pode continuar usando ext/sqlite sem problemas, mas você precisará habilitar explicitamento o PDO e sqlite. Novos projetos devem usar o PDO e o driver 'sqlite' (versão 3), que é mais rápido que o SQLite 2, teve melhorias de concorrências e locks, e no suporte de prepared statements e binary columns nativamente.
|
||||
</para>
|
||||
<para>
|
||||
Você deve habilitar o PDO para usar a extensão SQLite. Se você quiser desenvolver a extensão PD0 como uma extensao compartilhada, então a extensão SQLite também deve ser desenvolvida como compartilhada. O mesmo se mantém verdadeiro para qualquer extensão que disponibiliza um driver PD0.
|
||||
</para>
|
||||
</section>
|
||||
</section> <!-- end of migration51.databases -->
|
||||
|
||||
<section xml:id="migration51.errorcheck">
|
||||
<title>Veriricação para <constant>E_STRICT</constant></title>
|
||||
<informalexample>
|
||||
<para>
|
||||
Se você tem apenas um único script para verficar, você pode escolher os erros <constant>E_STRICT</constant> usando a linha de comando do PHP:
|
||||
</para>
|
||||
<programlisting role="shell">
|
||||
php -d error_reporting=4095 -l script_to_check.php
|
||||
</programlisting>
|
||||
<para>
|
||||
Para grandes projetos, o script shell abaixo irá atingir a mesma tarefa:
|
||||
</para>
|
||||
<programlisting role="shell">
|
||||
<![CDATA[
|
||||
#!/bin/sh
|
||||
|
||||
directory=$1
|
||||
|
||||
shift
|
||||
|
||||
# These extensions are checked
|
||||
extensions="php inc"
|
||||
|
||||
check_file ()
|
||||
{
|
||||
echo -ne "Doing PHP syntax check on $1 ..."
|
||||
|
||||
# Options:
|
||||
ERRORS=`/www/php/bin/php -d display_errors=1 -d html_errors=0 -d error_prepend_string=" " -d error_append_string=" " -d error_reporting=4095 -l $1 | grep -v "No syntax errors detected"`
|
||||
|
||||
if test -z "$ERRORS"; then
|
||||
echo -ne "OK."
|
||||
else
|
||||
echo -e "Errors found!\n$ERRORS"
|
||||
fi
|
||||
|
||||
echo
|
||||
}
|
||||
|
||||
# loop over remaining file args
|
||||
for FILE in "$@" ; do
|
||||
for ext in $extensions; do
|
||||
if echo $FILE | grep "\.$ext$" > /dev/null; then
|
||||
if test -f $FILE; then
|
||||
check_file "$FILE"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
done
|
||||
]]>
|
||||
</programlisting>
|
||||
</informalexample>
|
||||
</section>
|
||||
|
||||
</appendix>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
sgml-omittag:t
|
||||
sgml-shorttag:t
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-indent-step:1
|
||||
sgml-indent-data:t
|
||||
indent-tabs-mode:nil
|
||||
sgml-parent-document:nil
|
||||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||||
sgml-exposed-tags:nil
|
||||
sgml-local-catalogs:nil
|
||||
sgml-local-ecat-files:nil
|
||||
End:
|
||||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||||
vim: et tw=78 syn=sgml
|
||||
vi: ts=1 sw=1
|
||||
-->
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: a5c2092d0fcab02a32ec1042aab8393bb42ebb96 Maintainer: none Status: ready --><!-- CREDITS: Joel Tavares, Ítalo Lelis, Marcio Daniel da Silva, Sandro Eric, Marianna Texeira -->
|
||||
<!-- EN-Revision: 027f187b3ed8cdec60db6f83baf8f62b536d1101 Maintainer: none Status: ready --><!-- CREDITS: Joel Tavares, Ítalo Lelis, Marcio Daniel da Silva, Sandro Eric, Marianna Texeira, adiel -->
|
||||
<!--
|
||||
Based on UPGRADING from PHP 5.6.0 beta 1. Work in progress!
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
-->
|
||||
|
||||
<appendix xml:id="migration56" xmlns="http://docbook.org/ns/docbook" xmlns:phd="http://www.php.net/ns/phd">
|
||||
<title>Migrando do PHP 5.5.x para PHP 5.6.x</title>
|
||||
<title>Migrando do PHP 5.5.x para o PHP 5.6.x</title>
|
||||
|
||||
&appendices.migration56.incompatible;
|
||||
&appendices.migration56.new-features;
|
||||
@@ -24,19 +24,13 @@
|
||||
|
||||
<sect1 phd:chunk="false" xml:id="migration56.intro">
|
||||
<para>
|
||||
A maioria das melhorias no PHP 5.6.x não possuem impacto no código existente. Existem <link linkend="migration56.incompatible">algumas incompatibilidades</link>
|
||||
e <link linkend="migration56.new-features">novas funcionalidades</link> que devem ser consideradas, o codigo deve ser testado antes de alterar a versão do PHP nos ambientes de produção.
|
||||
A maioria das melhorias no PHP 5.6.x não tem impacto no código existente. Existem
|
||||
<link linkend="migration56.incompatible">algumas incompatibilidades</link>
|
||||
e <link linkend="migration56.new-features">novas funcionalidades</link> que devem
|
||||
ser consideradas, e o codigo deve ser testado antes de alterar a versão
|
||||
do PHP nos ambientes de produção.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
&manual.migration.seealso;
|
||||
<link linkend="migration5">5.0.x</link>,
|
||||
<link linkend="migration51">5.1.x</link>,
|
||||
<link linkend="migration52">5.2.x</link>,
|
||||
<link linkend="migration53">5.3.x</link>,
|
||||
<link linkend="migration54">5.4.x</link> and
|
||||
<link linkend="migration55">5.5.x</link>.
|
||||
</para>
|
||||
</sect1>
|
||||
</appendix>
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 3aca09435cbfa6a648466e4970e57e3b36bb4217 Maintainer: fabioluciano Status: ready --><!-- CREDITS: fabioluciano, royopa -->
|
||||
<!-- EN-Revision: 027f187b3ed8cdec60db6f83baf8f62b536d1101 Maintainer: fabioluciano Status: ready --><!-- CREDITS: fabioluciano, royopa, adiel -->
|
||||
<!--
|
||||
Work in progress!
|
||||
-->
|
||||
@@ -31,17 +31,6 @@
|
||||
considerados, e o código deve ser testado antes de trocar a versão do PHP em
|
||||
ambientes de produção.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
&manual.migration.seealso;
|
||||
<link linkend="migration5">5.0.x</link>,
|
||||
<link linkend="migration51">5.1.x</link>,
|
||||
<link linkend="migration52">5.2.x</link>,
|
||||
<link linkend="migration53">5.3.x</link>,
|
||||
<link linkend="migration54">5.4.x</link>,
|
||||
<link linkend="migration55">5.5.x</link> e
|
||||
<link linkend="migration56">5.6.x</link>.
|
||||
</para>
|
||||
</sect1>
|
||||
</appendix>
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 38c38330244df2cef54a6a3dfb51795c5cef5906 Maintainer: fabioluciano Status: revision --><!-- CREDITS: fabioluciano, adiel -->
|
||||
<!-- EN-Revision: 027f187b3ed8cdec60db6f83baf8f62b536d1101 Maintainer: fabioluciano Status: revision --><!-- CREDITS: fabioluciano, adiel -->
|
||||
|
||||
<sect2 xml:id="migration70.incompatible.removed-functions">
|
||||
<title>Funções removidas</title>
|
||||
@@ -93,8 +93,7 @@
|
||||
<function>set_magic_quotes_runtime</function>, juntamente com seu sinônimo
|
||||
<function>magic_quotes_runtime</function>, foram removidos. Eles foram
|
||||
depreciados no PHP 5.3.0 e se tornaram efetivamente não funcionais com
|
||||
a remoção das magic quotes
|
||||
<link linkend="migration54.incompatible">no PHP 5.4.0</link>.
|
||||
a remoção das magic quotes no PHP 5.4.0.
|
||||
</para>
|
||||
</sect3>
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: d92890ef469c2527326bcb4a6730892eee3c96cb Maintainer: mauricio Status: ready -->
|
||||
<!-- EN-Revision: 027f187b3ed8cdec60db6f83baf8f62b536d1101 Maintainer: mauricio Status: ready -->
|
||||
|
||||
<appendix xml:id="migration71" xmlns="http://docbook.org/ns/docbook" xmlns:phd="http://www.php.net/ns/phd">
|
||||
<title>Migrando do PHP 7.0.x para o PHP 7.1.x</title>
|
||||
@@ -24,13 +24,6 @@
|
||||
|
||||
<para>
|
||||
&manual.migration.seealso;
|
||||
<link linkend="migration5">5.0.x</link>,
|
||||
<link linkend="migration51">5.1.x</link>,
|
||||
<link linkend="migration52">5.2.x</link>,
|
||||
<link linkend="migration53">5.3.x</link>,
|
||||
<link linkend="migration54">5.4.x</link>,
|
||||
<link linkend="migration55">5.5.x</link>,
|
||||
<link linkend="migration56">5.6.x</link> e
|
||||
<link linkend="migration70">7.0.x</link>.
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: ff0a6e859f1ef69847d7d05ee91eeed82cd12b36 Maintainer: none Status: ready --><!-- CREDITS: github:vanildosouto -->
|
||||
<!-- EN-Revision: 027f187b3ed8cdec60db6f83baf8f62b536d1101 Maintainer: none Status: ready --><!-- CREDITS: github:vanildosouto, adiel -->
|
||||
|
||||
<appendix xml:id="migration72" xmlns="http://docbook.org/ns/docbook" xmlns:phd="http://www.php.net/ns/phd">
|
||||
<title>Migrando do PHP 7.1.x para o PHP 7.2.x</title>
|
||||
@@ -22,13 +22,6 @@
|
||||
|
||||
<para>
|
||||
&manual.migration.seealso;
|
||||
<link linkend="migration5">5.0.x</link>,
|
||||
<link linkend="migration51">5.1.x</link>,
|
||||
<link linkend="migration52">5.2.x</link>,
|
||||
<link linkend="migration53">5.3.x</link>,
|
||||
<link linkend="migration54">5.4.x</link>,
|
||||
<link linkend="migration55">5.5.x</link>,
|
||||
<link linkend="migration56">5.6.x</link>,
|
||||
<link linkend="migration70">7.0.x</link> e
|
||||
<link linkend="migration71">7.1.x</link>.
|
||||
</para>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 1c0149c4ce0ff86f2f5aaaf2fc0333de72e910d4 Maintainer: mauricio Status: ready -->
|
||||
<!-- EN-Revision: 027f187b3ed8cdec60db6f83baf8f62b536d1101 Maintainer: mauricio Status: ready --><!-- CREDITS: mauricio, adiel -->
|
||||
|
||||
<appendix xml:id="migration73" xmlns="http://docbook.org/ns/docbook" xmlns:phd="http://www.php.net/ns/phd">
|
||||
<title>Migrando do PHP 7.2.x para o PHP 7.3.x</title>
|
||||
@@ -23,13 +23,6 @@
|
||||
|
||||
<para>
|
||||
&manual.migration.seealso;
|
||||
<link linkend="migration5">5.0.x</link>,
|
||||
<link linkend="migration51">5.1.x</link>,
|
||||
<link linkend="migration52">5.2.x</link>,
|
||||
<link linkend="migration53">5.3.x</link>,
|
||||
<link linkend="migration54">5.4.x</link>,
|
||||
<link linkend="migration55">5.5.x</link>,
|
||||
<link linkend="migration56">5.6.x</link>,
|
||||
<link linkend="migration70">7.0.x</link>,
|
||||
<link linkend="migration71">7.1.x</link> e
|
||||
<link linkend="migration72">7.2.x</link>.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 068a836eb9a201c054279cff96e6d41b4737c4a2 Maintainer: geekcom Status: wip --><!-- CREDITS: geekcom -->
|
||||
<!-- EN-Revision: c31630ca23d219c758a8b580e1d583103e97e377 Maintainer: geekcom Status: wip --><!-- CREDITS: geekcom, adiel -->
|
||||
|
||||
<sect1 xml:id="migration80.incompatible" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Alterações incompatíveis com versões anteriores</title>
|
||||
@@ -730,7 +730,7 @@ $array["key"];
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <link linkend="ref.xmlwriter">XMLWriter functions</link> now accept and return, respectively,
|
||||
The <link linkend="book.xmlwriter">XMLWriter</link> functions now accept and return, respectively,
|
||||
<classname>XMLWriter</classname> objects instead of &resource;s.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- EN-Revision: dcd5448282973a659f62e4240fb6e50aae0eb78b Maintainer: ae Status: ready --><!-- CREDITS: narigone,ae,vanildosouto -->
|
||||
<!-- EN-Revision: dd48d47d8be2ff78295bc1a8605807325d2f11fd Maintainer: ae Status: ready --><!-- CREDITS: narigone,ae,vanildosouto,adiel -->
|
||||
<chapter xml:id="install.unix" xmlns="http://docbook.org/ns/docbook">
|
||||
<title>Instalação em sistemas Unix</title>
|
||||
<para>
|
||||
@@ -161,7 +161,6 @@
|
||||
&install.unix.apache2;
|
||||
&install.unix.nginx;
|
||||
&install.unix.lighttpd-14;
|
||||
&install.unix.sun;
|
||||
&install.unix.litespeed;
|
||||
&install.unix.commandline;
|
||||
<!-- operating system specific nodes -->
|
||||
|
||||
@@ -1,345 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 96c9d88bad9a7d7d44bfb7f26c226df7ee9ddf26 Maintainer: ae Status: ready --><!-- CREDITS: narigone,ae -->
|
||||
<sect1 xml:id="install.unix.sun" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Sun, iPlanet e servidores Netscape no Solaris da Sun</title>
|
||||
<para>
|
||||
Essa seção contem notas e dicas específicas para instação do PHP nos servidores
|
||||
un Java System Web Server, Sun ONE Web Server, iPlanet e Netscape no Solaris.
|
||||
</para>
|
||||
<para>
|
||||
A partir do PHP 4.3.3, você pode usar scripts PHP com o
|
||||
<link linkend="ref.nsapi">módulo NSAPI</link> para
|
||||
<link linkend="install.unix.sun.specialpages">gerar listagem de diretórios
|
||||
e páginas de erro personalizadas</link>. Funções adicionais para compatibilidade
|
||||
com o Apache também estão disponíveis. Para suporte nos webservers atuais, leia
|
||||
a <link linkend="install.unix.sun.notes">nota sobre sub-requisições</link>.
|
||||
</para>
|
||||
<para>
|
||||
Você pode achar mais informações sobre como instalar o PHP para o
|
||||
Servidor Netscape Enterprise (NES) aqui:
|
||||
<link xlink:href="&url.netscape.nsapi;">&url.netscape.nsapi;</link>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Para compilar o PHP com servidores web Sun JSWS/Sun ONE WS/iPlanet/Netscape,
|
||||
entre o diretório apropriado de instalação para a opção
|
||||
<link linkend="configure.with-nsapi">--with-nsapi=[DIR]</link>
|
||||
O diretório padrão é, normalmente
|
||||
<filename class="directory">/opt/netscape/suitespot/</filename>.
|
||||
Por favor, leia também <filename>/php-xxx-version/sapi/nsapi/nsapi-readme.txt</filename>.
|
||||
</para>
|
||||
<para>
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Instale os seguintes pacotes de <link xlink:href="&url.sun.freeware;">
|
||||
&url.sun.freeware;</link> ou outro site de download:
|
||||
<simplelist>
|
||||
<member><filename>autoconf-2.13</filename></member>
|
||||
<member><filename>automake-1.4</filename></member>
|
||||
<member><filename>bison-1_25-sol26-sparc-local</filename></member>
|
||||
<member><filename>flex-2_5_4a-sol26-sparc-local</filename></member>
|
||||
<member><filename>gcc-2_95_2-sol26-sparc-local</filename></member>
|
||||
<member><filename>gzip-1.2.4-sol26-sparc-local</filename></member>
|
||||
<member><filename>m4-1_4-sol26-sparc-local</filename></member>
|
||||
<member><filename>make-3_76_1-sol26-sparc-local</filename></member>
|
||||
<member>
|
||||
<filename>mysql-3.23.24-beta</filename> (se você quiser suporte ao MySQL)
|
||||
</member>
|
||||
<member><filename>perl-5_005_03-sol26-sparc-local</filename></member>
|
||||
<member><filename>tar-1.13</filename> (GNU tar)</member>
|
||||
</simplelist>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
Assegure-se que seu PATH inclue os diretórios apropriados
|
||||
<literal>PATH=.:/usr/local/bin:/usr/sbin:/usr/bin:/usr/ccs/bin</literal>
|
||||
E está disponível para o seu sistema <userinput>export PATH</userinput>.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<userinput>gunzip php-x.x.x.tar.gz</userinput> (se você tiver uma distribuição <filename>.gz</filename>,
|
||||
caso contrário vá para o passo 4).
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<userinput>tar xvf php-x.x.x.tar</userinput>
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
Mude para o diretório recém-criado:
|
||||
<userinput>cd ../php-x.x.x </userinput>
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Para o passo seguinte, assegure-se de que
|
||||
<filename class="directory">/opt/netscape/suitespot/</filename> é
|
||||
onde o seu servidor Netscape está instalado. Caso contrário, mude o
|
||||
comando abaixo para o caminho correto e execute:
|
||||
<programlisting role="shell">
|
||||
<![CDATA[
|
||||
./configure --with-mysql=/usr/local/mysql \
|
||||
--with-nsapi=/opt/netscape/suitespot/ \
|
||||
--enable-libgcc
|
||||
]]>
|
||||
</programlisting>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
Execute <command>make</command> seguido de <command>make install</command>.
|
||||
</simpara>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</para>
|
||||
<para>
|
||||
Depois de fazer a instalação básica e ler o arquivo readme apropriado,
|
||||
você pode precisar executar alguns passos extras de configuração.
|
||||
</para>
|
||||
<formalpara>
|
||||
<title>Instruções de Configuração para o Sun/iPlanet/Netscape</title>
|
||||
<para>
|
||||
Primeiramente, você pode preciasr adicionar alguns caminhos para a váriavel de ambiente
|
||||
<varname>LD_LIBRARY_PATH</varname> para que o servidor ache as bibliotecas compartilhadas. A melhor
|
||||
maneira de fazer isso é no script de inicialização do ser servidor web. Esse script normalmente está
|
||||
localizado em: <filename class="directory">/caminho/para/servidor/https-nome_do_servidor/start</filename>.
|
||||
Você pode precisar também de editar os arquivos de configuração que estão
|
||||
localizados em: <filename
|
||||
class="directory">/caminho/para/servidor/https-nome_do_servidor/config/</filename>.
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Adicione a seguinte linha no arquivo <filename>mime.types</filename> (você pode fazer
|
||||
isso pelo servidor de administração):
|
||||
<screen>
|
||||
<![CDATA[
|
||||
type=magnus-internal/x-httpd-php exts=php
|
||||
]]>
|
||||
</screen>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Edite o arquivo <filename>magnus.conf</filename> (para servidores >= 6) ou
|
||||
o arquivo <filename>obj.conf</filename> (para servidores < 6) e adicione a seguinte
|
||||
biblioteca compartilhada que pode variar dependendo do seu sistema, ela se parecererá com
|
||||
<filename>/opt/netscape/suitespot/bin/libphp4.so</filename>. Você deve
|
||||
colocar as seguintes linhas após <literal>mime types init</literal>.
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="/opt/netscape/suitespot/bin/libphp4.so"
|
||||
Init fn="php4_init" LateInit="yes" errorString="Failed to initialize PHP!" [php_ini="/path/to/php.ini"]
|
||||
]]>
|
||||
</programlisting>
|
||||
(PHP >= 4.3.3) O parâmetro <literal>php_ini</literal> é
|
||||
opcional mas com ele você pode colocar seu arquivo &php.ini; no
|
||||
diretório config do seu servidor web.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Configure o objeto padrão no arquivo <filename>obj.conf</filename>
|
||||
(para classes de servidor virtuais [versão 6.0+] no
|
||||
arquivo <filename>vserver.obj.conf</filename>):
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
<Object name="default">
|
||||
.
|
||||
.
|
||||
.
|
||||
.#NOTA Essa linha deve acontecer após todos as linhas 'ObjectType' e antes de todas as linas 'AddLog'
|
||||
Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inikey=value ...]
|
||||
.
|
||||
.
|
||||
</Object>
|
||||
]]>
|
||||
</programlisting>
|
||||
(PHP >= 4.3.3) Como parâmetros adicionais, você pode acrescentar valores
|
||||
especiais do &php.ini;, por exemplo, você pode editar um
|
||||
<literal>docroot="/path/to/docroot"</literal> específico
|
||||
para o contexto <literal>php4_execute</literal> chamado. Para valores
|
||||
booleanos, use 0/1 como valor, não
|
||||
<literal>"On","Off",...</literal>
|
||||
(isso não funcionará corretamente) ,ex.:
|
||||
<literal>zlib.output_compression=1</literal> ao invés de
|
||||
<literal>zlib.output_compression="On"</literal>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Isso só é necessários se você quiser configurar um diretório que apenas consiste de
|
||||
scripts PHP (assim como um diretório <filename class="directory">cgi-bin</filename>):
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
<Object name="x-httpd-php">
|
||||
ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
|
||||
Service fn=php4_execute [inikey=value inikey=value ...]
|
||||
</Object>
|
||||
]]>
|
||||
</programlisting>
|
||||
Depois que você pode configurar um diretório no servidor de Administração e atribuir a ele
|
||||
o estilo <literal>x-httpd-php</literal>. Todos os arquivo no diretório serão executados como PHP.
|
||||
Isso é bom para esconder uso do PHP renomeando os arquivos para <filename>.html</filename>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Configuração de autenticação: autenticação do PHP não pode ser usada com qualquer
|
||||
outra autenticação. TODA AUTENTICAÇÃO E PASSADA PARA O SEU SCRIPT PHP.
|
||||
Para configurar autenticação via PHP para o servidor todo, adicione a
|
||||
seguinte linha para o seu objeto padrão:
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
<Object name="default">
|
||||
AuthTrans fn=php4_auth_trans
|
||||
.
|
||||
.
|
||||
.
|
||||
</Object>
|
||||
]]>
|
||||
</programlisting>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Para usar autenticação via PHP em apenas um diretório, adicione o seguinte:
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
<Object ppath="d:\path\to\authenticated\dir\*">
|
||||
AuthTrans fn=php4_auth_trans
|
||||
</Object>
|
||||
]]>
|
||||
</programlisting>
|
||||
</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</para>
|
||||
</formalpara>
|
||||
<note>
|
||||
<para>
|
||||
O tamanho da pilha que o PHP usa depende da configuração do servidor web. Se você tiver
|
||||
problemas com scripts PHP muito grandes, é recomendado aumentar o tamanho da pilha com o Admin Server
|
||||
(na seção "MAGNUS EDITOR").
|
||||
</para>
|
||||
</note>
|
||||
|
||||
<sect2 xml:id="install.unix.sun.phpini">
|
||||
<title>Ambiente CGI e modificações recomendadas ao arquivo php.ini</title>
|
||||
<para>
|
||||
É importante ter em mente quando escrever scripts PHP que os servidores web
|
||||
Sun JSWS/Sun ONE WS/iPlanet/Netscape são multithreaded. Por isso, todas as requisições
|
||||
estão rodando no mesmo espaço de processo (o espaço do servidor web
|
||||
em si) e esse espaço só tem um ambiente. Se você quiser usar variáveis
|
||||
CGI como <literal>PATH_INFO</literal>, <literal>HTTP_HOST</literal>
|
||||
etc, não é correto tentar fazer da maneira como PHP antigo faz, com
|
||||
a função <function>getenv</function> ou de maneira similar (registrando globais
|
||||
ao ambiente, <varname>$_ENV</varname>). Você só pegaria o ambiente
|
||||
do servidor web sem qualquer variáveis CGI válidas.
|
||||
</para>
|
||||
<note>
|
||||
<para>
|
||||
Por que existem variáveis CGI inválidas no ambiente?
|
||||
</para>
|
||||
<para>
|
||||
Resposta: Isso é porque você iniciou o processo do servidor do admin server
|
||||
que roda o script de iniciação do mesmo, você queria iniciar como um script CGI
|
||||
(um script CGI dentro do admin server!). Isso é porque o ambiente do
|
||||
servidor web iniciado tem algumas variáveis CGI de ambiente nele. Você pode testar
|
||||
isso iniciando o servidor web sem ser do admin server. Use
|
||||
a linha de comando como usuário root e inicie-o manualmente - você verá que
|
||||
não exite nenhuma variável CGI de ambiente.
|
||||
</para>
|
||||
</note>
|
||||
<para>
|
||||
Simplesmente mudando seus scripts para pegar variáveis CGI é a maneira correta para
|
||||
o PHP 4.x usando o superglobal <varname>$_SERVER</varname>. Se você tiver
|
||||
scripts velhos que usam <varname>$HTTP_HOST</varname>, etc., você deve ligar
|
||||
<literal>register_globals</literal> no arquivo &php.ini; e mudar a ordem das
|
||||
variáveis também (importante: remova <literal>"E"</literal> de lá,
|
||||
porque voe não precisa do ambiente aqui):
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
variables_order = "GPCS"
|
||||
register_globals = On
|
||||
]]>
|
||||
</programlisting>
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 xml:id="install.unix.sun.specialpages">
|
||||
<title>Uso especial para páginas de erro e listagem de diretório auto-geradas (PHP >= 4.3.3)</title>
|
||||
<para>
|
||||
Você pode usar o PHP para gerar as páginas de erro para <literal>"404 Not Found"</literal>
|
||||
ou similares. Adicione a seguinte linha no objeto do arquivo <filename>obj.conf</filename> para
|
||||
cada página de erro que você quiser sobrescrever:
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
Error fn="php4_execute" code=XXX script="/path/to/script.php" [inikey=value inikey=value...]
|
||||
]]>
|
||||
</programlisting>
|
||||
Onde <literal>XXX</literal> é o código do erro HTTP. Por favor remova
|
||||
qualquer outra diretiva <literal>Error</literal> que possa interferir com as suas.
|
||||
Se você quiser colocar uma página para todos os erros que podem existir, tire
|
||||
o parâmetro <literal>code</literal>. Seu script pode pegar o código do erro
|
||||
com <varname>$_SERVER['ERROR_TYPE']</varname>.
|
||||
</para>
|
||||
<para>
|
||||
Outra possibilidade é criar uma listagem do diretório auto-gerada.
|
||||
Apenas crie um script PHP que mostra uma listagem do diretório e
|
||||
substitua o padrão correspondente Service line for
|
||||
<literal>type="magnus-internal/directory"</literal>
|
||||
no arquivo <filename>obj.conf</filename> pelo seguinte:
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
Service fn="php4_execute" type="magnus-internal/directory" script="/path/to/script.php" [inikey=value inikey=value...]
|
||||
]]>
|
||||
</programlisting>
|
||||
Tanto para os erros e as páginas de listagem do diretório a URI original e
|
||||
a URL traduzida estão nas variáveis <varname>$_SERVER['PATH_INFO']</varname> e
|
||||
<varname>$_SERVER['PATH_TRANSLATED']</varname>.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 xml:id="install.unix.sun.notes">
|
||||
<title>Nota sobre <function>nsapi_virtual</function> e sub-requisições(PHP >= 4.3.3)</title>
|
||||
<para>
|
||||
O módulo NSAPI agora suporta a função <function>nsapi_virtual</function>
|
||||
(sinônima (alias): <function>virtual</function>)
|
||||
para fazer sub-requisições no servidor web e inserir o resultado na página web.
|
||||
Essa função usa algumas funcionalidades não documentadas da biblioteca NSAPI.
|
||||
No Unix, o módulo procura automaticamente para as funções necessárias e as usa
|
||||
se estiverem disponíveis. Se não, <function>nsapi_virtual</function> é desabilitada.
|
||||
</para>
|
||||
<note>
|
||||
<para>
|
||||
Mas esteja avisado: Suporte para <function>nsapi_virtual</function> é EXPERIMENTAL!!!
|
||||
</para>
|
||||
</note>
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
sgml-omittag:t
|
||||
sgml-shorttag:t
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-indent-step:1
|
||||
sgml-indent-data:t
|
||||
indent-tabs-mode:nil
|
||||
sgml-parent-document:nil
|
||||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||||
sgml-exposed-tags:nil
|
||||
sgml-local-catalogs:nil
|
||||
sgml-local-ecat-files:nil
|
||||
End:
|
||||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||||
vim: et tw=78 syn=sgml
|
||||
vi: ts=1 sw=1
|
||||
-->
|
||||
@@ -1,328 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 17fc359d7eb75d7d6199db77518924f2d351ed8b Maintainer: ae Status: ready --><!-- CREDITS: narigone, fabioluciano -->
|
||||
<sect2 xml:id="install.windows.legacy.sun" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Servidores Sun, iPlanet e Netscape no Microsoft Windows</title>
|
||||
<para>
|
||||
Essa seção contem notas e dicas específicas para instalação do PHP em servidores
|
||||
Sun Java System Web Server, Sun ONE Web Server, iPlanet e Netscape no Windows.
|
||||
</para>
|
||||
<para>
|
||||
A partir do PHP 4.3.3 você pode usar seus scripts PHP com o
|
||||
<link linkend="ref.nsapi">módulo NSAPI</link> para
|
||||
<!--<link linkend="install.windows.sun.specialpages">gerar listagens
|
||||
personalizadas de diretórios e páginas de erro</link>. Funções adicionais para compatibilidade com -->
|
||||
o Apache também estão disponíveis. Para suporte nos servidores web atuais
|
||||
<!--leia a <link linkend="install.windows.sun.notes">nota sobre
|
||||
subrequests</link>.-->
|
||||
</para>
|
||||
|
||||
<sect3 xml:id="install.windows.legacy.sun.cgi">
|
||||
<title>Configurando como CGI em servidores Sun, iPlanet e Netscape</title>
|
||||
<para>
|
||||
Para instalar o PHP como um tratador de CGI, faça o seguinte:
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<simpara>
|
||||
Copie o arquivo <filename>php4ts.dll</filename> para a pasta raiz do seu sistema
|
||||
(o diretório onde você instalou o Windows)
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Faça uma associação de arquivo a partir da linha de comando.
|
||||
Digite as duas linhas a seguir:
|
||||
<programlisting role="shell">
|
||||
<![CDATA[
|
||||
assoc .php=PHPScript
|
||||
ftype PHPScript=c:\php\php.exe %1 %*
|
||||
]]>
|
||||
</programlisting>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
No Netscape Enterprise Administration Server crie
|
||||
um diretório dummy para o shellcgi e remova-o em seguida (esse
|
||||
passo cria 5 linhas importantes no obj.conf e permite que
|
||||
o servidor web trate scripts shellcgi).
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
No Netscape Enterprise Administration Server crie
|
||||
um novo tipo mime (Category: type,
|
||||
Content-Type: magnus-internal/shellcgi, File Suffix:php).
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
Faça isso para cada instância do servidor web que você quiser que rode o PHP
|
||||
</simpara>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>
|
||||
Mais detalhes sobre configuração do
|
||||
PHP como um executável CGI pode ser encontrado aqui:
|
||||
<link xlink:href="&url.netscape.cgi;">&url.netscape.cgi;</link>
|
||||
</para>
|
||||
</sect3>
|
||||
|
||||
<sect3 xml:id="install.windows.legacy.sun.nsapi">
|
||||
<title>Configurando como NSAPI em servidores Sun, iPlanet e Netscape</title>
|
||||
<para>
|
||||
Para instalar o PHP com NSAPI, faça o seguinte:
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<simpara>
|
||||
Copie <filename>php4ts.dll</filename> para a pasta raiz do seu sistema
|
||||
(o diretório onde você instalou o Windows)
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Faça uma associação de arquivo a partir da linha de comando.
|
||||
Digite as duas linhas a seguir:
|
||||
<programlisting role="shell">
|
||||
<![CDATA[
|
||||
assoc .php=PHPScript
|
||||
ftype PHPScript=c:\php\php.exe %1 %*
|
||||
]]>
|
||||
</programlisting>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
No Netscape Enterprise Administration Server crie
|
||||
um novo tipo mime (Category: type,
|
||||
Content-Type: magnus-internal/x-httpd-php, File Suffix: php).
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Edite o arquivo <filename>magnus.conf</filename> (para servidores >= 6) ou
|
||||
<filename>obj.conf</filename> (para servidores < 6) e adicione o seguinte:
|
||||
Você deve
|
||||
colocar as linhas depois de <literal>mime types init</literal>.
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="c:/php/sapi/php4nsapi.dll"
|
||||
Init fn="php4_init" LateInit="yes" errorString="Failed to initialise PHP!" [php_ini="c:/path/to/php.ini"]
|
||||
]]>
|
||||
</programlisting>
|
||||
(PHP >= 4.3.3) O parâmetro <literal>php_ini</literal> é
|
||||
opcional, mas com ele você pode colocar seu arquivo
|
||||
&php.ini; no diretório de configuração do seu servidor web.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Configure o objeto padrão no arquivo <filename>obj.conf</filename>
|
||||
(para classes de servidor virtual [Sun Web Server 6.0+] no
|
||||
arquivo <filename>vserver.obj.conf</filename>):
|
||||
Na seção <literal><Object name="default"></literal>,
|
||||
coloque essa linha necessariamente após todas as linhas do tipo 'ObjectType'
|
||||
e antes das do tipo 'AddLog':
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inikey=value ...]
|
||||
]]>
|
||||
</programlisting>
|
||||
(PHP >= 4.3.3) Como parâmetros adicionais,você pode adicionar alguns valores
|
||||
especiais do arquivo &php.ini;, por exemplo, você pode
|
||||
atribuir um <literal>docroot="/path/to/docroot"</literal>
|
||||
específico ao contexto no qual <literal>php4_execute</literal>
|
||||
é chamado. Para valores booleanos utilize 0/1 como valor,
|
||||
e não <literal>"On","Off",...</literal>
|
||||
(Isso não funcionará), ex.:
|
||||
<literal>zlib.output_compression=1</literal> ao invés de
|
||||
<literal>zlib.output_compression="On"</literal>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Isso só é necessário se você quiser configurar um diretório que só consiste de
|
||||
scripts PHP (como em um diretório cgi-bin):
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
<Object name="x-httpd-php">
|
||||
ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
|
||||
Service fn=php4_execute [inikey=value inikey=value ...]
|
||||
</Object>
|
||||
]]>
|
||||
</programlisting>
|
||||
Depois disso você pode configurar um diretório na ferramenta de Administração do servidor e atribuir a ele
|
||||
um estilo <literal>x-httpd-php</literal>. Todos os arquivos neles serão executados como PHP.
|
||||
Isso é bom para esconder o uso do PHP renomeando os arquivos como <filename>.html</filename>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
Reinicie seu servidor web e aplique as mudanças
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
Faça isso para cada instância do servidor web que você quiser que execute o PHP
|
||||
</simpara>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<note>
|
||||
<para>
|
||||
Mais detalhes sobre configurar o
|
||||
PHP como um filtro NSAPI pode ser achado aqui:
|
||||
<link xlink:href="&url.netscape.nsapi;">&url.netscape.nsapi;</link>
|
||||
</para>
|
||||
</note>
|
||||
<note>
|
||||
<para>
|
||||
O tamanho de pilha que o PHP usa depende da configuração do servidor web. Se você tiver
|
||||
problemas com scripts muito grandes, é recomendado aumentar esse tamanho com o Administrador
|
||||
do Servidor (na seção "MAGNUS EDITOR").
|
||||
</para>
|
||||
</note>
|
||||
</sect3>
|
||||
|
||||
<sect3 xml:id="install.windows.legacy.sun.phpini">
|
||||
<title>Ambiente CGI e modificações recomendadas ao arquivo &php.ini;</title>
|
||||
<para>
|
||||
É importante quando escrevendo scripts PHP levar em conta o fato que Sun JSWS/Sun ONE
|
||||
WS/iPlanet/Netscape são servidores multithreaded. Por isso, todas as
|
||||
requisições estão sendo executadas no mesmo espaço de processo (o espaço do servidor
|
||||
web) e esse espaço só tem um ambiente. Se você quiser usar variáveis
|
||||
CGI como <literal>PATH_INFO</literal>, <literal>HTTP_HOST</literal>
|
||||
etc, não é correto tentar pegá-las da maneira do PHP antigo, usando a função
|
||||
<function>getenv</function> ou uma maneira similar (registrar globais para o
|
||||
ambiente, <literal>$_ENV</literal>). Você só iria pegar o ambiente do
|
||||
servidor web sem quaisquer variáveis CGI válidas!
|
||||
</para>
|
||||
<note>
|
||||
<para>
|
||||
Porque existem variáveis CGI (inválidas) no ambiente?
|
||||
</para>
|
||||
<para>
|
||||
Resposta: Isso é porque você inicializou o processo do servidor a partir do administrador
|
||||
do servidor que executa o script de inicialização do servidor web, você queria iniciar, como um script
|
||||
CGI (um script CGI dentro do administrador do servidor!). Isso é porque o ambiente do
|
||||
servidor tem algumas variáveis CGI do ambiente nele. Você pode testar isso
|
||||
inicializando o servidor web de outra forma que não pelo administrador do servidor. Use
|
||||
a linha de comando como usuário root e inicialize-o manualmente - você verá
|
||||
que não há variáveis ambientes do tipo CGI.
|
||||
</para>
|
||||
</note>
|
||||
<para>
|
||||
Simplesmente mude seus scripts para pegar variáveis CGI da maneira correta para
|
||||
o PHP 4.x, usando o array superglobal <varname>$_SERVER</varname>. Se você tiver
|
||||
scripts mais antigos que usem <varname>$HTTP_HOST</varname>, etc., você deve ligar a
|
||||
diretiva <literal>register_globals</literal> no arquivo &php.ini; e mudar a ordem das
|
||||
variáveis também (importante: remova <literal>"E"</literal> da diretiva,
|
||||
porque você não precisa das variávies de ambiente aqui):
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
variables_order = "GPCS"
|
||||
register_globals = On
|
||||
]]>
|
||||
</programlisting>
|
||||
</para>
|
||||
</sect3>
|
||||
|
||||
<sect3 xml:id="install.windows.legacy.sun.specialpages">
|
||||
<title>Uso especial para páginas de erro ou listagens de conteúdo de diretório auto-geradas (PHP >= 4.3.3)</title>
|
||||
<para>
|
||||
Você pode usar o PHP para gerar as páginas de erro para <literal>"404 Not Found"</literal>
|
||||
ou similar. Adicione a seguinte linha ao objeto no arquivo <filename>obj.conf</filename> para
|
||||
cada página de erro que você queira sobrescrever:
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
Error fn="php4_execute" code=XXX script="/path/to/script.php" [inikey=value inikey=value...]
|
||||
]]>
|
||||
</programlisting>
|
||||
onde <literal>XXX</literal> é o código de erro HTTP. Por favor apague
|
||||
qualquer outra diretiva <literal>Error</literal> que podem interferir com as suas.
|
||||
Se você quiser colocar uma página para todos os erros que podem existir, não
|
||||
informe o parâmetro <literal>code</literal>. Seu script pode determinar qual o erro
|
||||
pela variável <varname>$_SERVER['ERROR_TYPE']</varname>.
|
||||
</para>
|
||||
<para>
|
||||
Outra possibilidade é gerar listagens de conteúdo de diretório.
|
||||
Apenas crie um script PHP que mostre uma listagem do diretório e
|
||||
substitua o valor padrão da linha Service
|
||||
<literal>type="magnus-internal/directory"</literal>
|
||||
no arquivo <filename>obj.conf</filename> com a seguinte:
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
Service fn="php4_execute" type="magnus-internal/directory" script="/path/to/script.php" [inikey=value inikey=value...]
|
||||
]]>
|
||||
</programlisting>
|
||||
Tanto para páginas de erro e de listagem de diretório a URI original e
|
||||
a URI traduzida estão nas variáveis <varname>$_SERVER['PATH_INFO']</varname> e
|
||||
<varname>$_SERVER['PATH_TRANSLATED']</varname>.
|
||||
</para>
|
||||
</sect3>
|
||||
|
||||
<sect3 xml:id="install.windows.legacy.sun.notes">
|
||||
<title>Nota sobre <function>nsapi_virtual</function> e subrequisições (subrequests) (PHP >= 4.3.3)</title>
|
||||
<para>
|
||||
O módulo NSAPI agora suporta a função <function>nsapi_virtual</function>
|
||||
(sinônimo (alias): <function>virtual</function>)
|
||||
para fazer subrequisições no servidor web e inserir o resultado em uma página web.
|
||||
O problema é que essa função usa algumas características não documentadas da
|
||||
biblioteca NSAPI.
|
||||
</para>
|
||||
<para>
|
||||
No Unix, isso não é um problema, porque o módulo procura automaticamente
|
||||
pelas funções necessárias e usa elas se disponíveis.
|
||||
Se não, <function>nsapi_virtual</function> é desabilitada.
|
||||
</para>
|
||||
<para>
|
||||
Limitações de tratamento de DLLs no Windows precisam da detecção
|
||||
automática do arquivo <filename>ns-httpdXX.dll</filename> mais recente.
|
||||
Isso é testado pelos servidores até a versão 6.1. Se uma versão mais nova do
|
||||
servidor Sun é usado, a detecção falha e <function>nsapi_virtual</function>
|
||||
é desabilitada.
|
||||
</para>
|
||||
<para>
|
||||
Se esse for o caso, tente o seguinte:
|
||||
Adicione o seguinte parâmetro para <literal>php4_init</literal> em
|
||||
<filename>magnus.conf</filename>/<filename>obj.conf</filename>:
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
Init fn=php4_init ... server_lib="ns-httpdXX.dll"
|
||||
]]>
|
||||
</programlisting>
|
||||
onde <literal>XX</literal> é o número de versão correto da DLL.
|
||||
Para obter esse valor, procure na pasta raiz do servidor para o nome correto da DLL. A
|
||||
DLL com o maior tamanho é a certa.
|
||||
</para>
|
||||
<para>
|
||||
Você pode verificar o status usando a função <function>phpinfo</function>.
|
||||
</para>
|
||||
<note>
|
||||
<para>
|
||||
Mas esteja avisado: O suporte para <function>nsapi_virtual</function> é EXPERIMENTAL!!!
|
||||
</para>
|
||||
</note>
|
||||
</sect3>
|
||||
</sect2>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
sgml-omittag:t
|
||||
sgml-shorttag:t
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-indent-step:1
|
||||
sgml-indent-data:t
|
||||
indent-tabs-mode:nil
|
||||
sgml-parent-document:nil
|
||||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||||
sgml-exposed-tags:nil
|
||||
sgml-local-catalogs:nil
|
||||
sgml-local-ecat-files:nil
|
||||
End:
|
||||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||||
vim: et tw=78 syn=sgml
|
||||
vi: ts=1 sw=1
|
||||
-->
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 0970bf6ea3abcd27673fe4632a1ee62eb9f5223e Maintainer: ae Status: revision --><!-- CREDITS: felipe, ae, klaussilveira, fabioluciano, adiel -->
|
||||
<!-- EN-Revision: 227c9c797eb2ea920aa9b3fb8d46ef3ecec860ae Maintainer: ae Status: revision --><!-- CREDITS: felipe, ae, klaussilveira, fabioluciano, adiel -->
|
||||
<!-- Keep 'em sorted -->
|
||||
|
||||
<!ENTITY changelog.randomseed '<row xmlns="http://docbook.org/ns/docbook"><entry>4.2.0</entry><entry>O gerador
|
||||
@@ -1245,7 +1245,7 @@ chamada de <function>mysqli_real_connect</function> e depois de <function>mysqli
|
||||
|
||||
<!-- Notes for SAPI/Apache -->
|
||||
<!ENTITY apache.req.module '<simpara xmlns="http://docbook.org/ns/docbook">Esta função é suportada quando o PHP
|
||||
está instalado como um módulo do Apache ou como<link linkend="book.nsapi">módulo NSAPI</link> nos servidores Netscape/iPlanet/SunONE.
|
||||
está instalado como um módulo do Apache.
|
||||
</simpara>'>
|
||||
|
||||
<!-- SimpleXML Notes -->
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- EN-Revision: 9884bb84dd0d63fbc19312349f75f31b229e3190 Maintainer: ae Status: ready --><!-- CREDITS: ae, felipe, fabioluciano -->
|
||||
<!-- EN-Revision: 4a7ddddc27271967b616ad3400cfbe2a9b48212b Maintainer: ae Status: ready --><!-- CREDITS: ae, felipe, fabioluciano, adiel -->
|
||||
<chapter xml:id="language.variables" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Variáveis</title>
|
||||
|
||||
@@ -1096,36 +1096,10 @@ $varname.ext; /* nome de variável inválido */
|
||||
</thead>
|
||||
<tbody>
|
||||
<row>
|
||||
<entry>5.4.0</entry>
|
||||
<entry>7.2.34, 7.3.23, 7.4.11</entry>
|
||||
<entry>
|
||||
<link linkend="security.globals">Register Globals</link>,
|
||||
<link linkend="security.magicquotes">Magic Quotes</link> e
|
||||
<link linkend="ini.register-long-arrays">register_long_arrays</link>
|
||||
foram removidos
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>5.3.0</entry>
|
||||
<entry>
|
||||
<link linkend="security.globals">Register Globals</link>,
|
||||
<link linkend="security.magicquotes">Magic Quotes</link> e
|
||||
<link linkend="ini.register-long-arrays">register_long_arrays</link>
|
||||
estão obsoletos
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>4.2.0</entry>
|
||||
<entry>
|
||||
A diretiva <link linkend="ini.register-globals">register_globals</link>
|
||||
foi padronizada para <emphasis>off</emphasis>.
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>4.1.0</entry>
|
||||
<entry>
|
||||
Os <link linkend="language.variables.superglobals">Arrays superglobais</link>,
|
||||
<varname>$_POST</varname> e <varname>$_GET</varname> estão
|
||||
disponíveis.
|
||||
Os <emphasis>nomes</emphasis> dos cookies recebidos não são mais decodificados no formato URL
|
||||
por razões de segurança.
|
||||
</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
@@ -1157,4 +1131,4 @@ End:
|
||||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||||
vim: et tw=78 syn=sgml
|
||||
vi: ts=1 sw=1
|
||||
-->
|
||||
-->
|
||||
|
||||
@@ -1,28 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- EN-Revision: ad8e0151314c98ae54244ce625ed41cf14798bed Maintainer: ae Status: ready --><!-- CREDITS: ae, fabioluciano -->
|
||||
<!-- EN-Revision: d278431ef5e561787093a7b2679327a615b09367 Maintainer: ae Status: ready --><!-- CREDITS: adiel, ae, fabioluciano -->
|
||||
<!-- splitted from ./en/functions/apache.xml, last change in rev 1.2 -->
|
||||
<refentry xml:id="function.apache-request-headers" xmlns="http://docbook.org/ns/docbook">
|
||||
<refnamediv>
|
||||
<refname>apache_request_headers</refname>
|
||||
<refpurpose>Captura todos os cabeçalhos HTTP</refpurpose>
|
||||
<refpurpose>Obtém todos os cabeçalhos da requisição HTTP</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsect1 role="description">
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<type>array</type><methodname>apache_request_headers</methodname>
|
||||
<type class="union"><type>array</type><type>false</type></type><methodname>apache_response_headers</methodname>
|
||||
<void/>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
Captura todos os cabeçalhos HTTP da requisição atual.
|
||||
Obtém todos os cabeçalhos HTTP da requisição atual. Funciona na
|
||||
CLI e nos servidores web Apache, FastCGI e FPM.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="returnvalues">
|
||||
&reftitle.returnvalues;
|
||||
<para>
|
||||
Um array de todos os cabeçalho HTTP da requisição atual,
|
||||
&false; em caso de falhas.
|
||||
Um array associativo de todos os cabeçalho HTTP da requisição atual, ou
|
||||
&false; em caso de falha.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
@@ -39,18 +40,9 @@
|
||||
</thead>
|
||||
<tbody>
|
||||
<row>
|
||||
<entry>5.5.7</entry>
|
||||
<entry>7.3.0</entry>
|
||||
<entry>
|
||||
Esta função tornou-se disponível no servidor CLI.
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>5.4.0</entry>
|
||||
<entry>
|
||||
Esta função tornou-se disponível no FastCGI. Anteriormente era
|
||||
suportada somente quando o PHP era instalado como módulo Apache ou como um
|
||||
<link linkend="book.nsapi">módulo NSAPI</link> nos servidores
|
||||
Netscape/iPlanet/SunONE.
|
||||
Esta função tornou-se disponível na SAPI FPM.
|
||||
</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
@@ -94,10 +86,10 @@ Connection: Keep-Alive
|
||||
&reftitle.notes;
|
||||
<note>
|
||||
<para>
|
||||
Você também pode obter variáveis <acronym>CGI</acronym> comuns
|
||||
através da leitura do ambiente, que funcionará independente
|
||||
de estar utilizando o PHP como um módulo do <productname>Apache</productname>. Utilize
|
||||
a função <function>phpinfo</function> para ver uma lista de todas as
|
||||
Você também pode obter o valor das variáveis <acronym>CGI</acronym> comuns
|
||||
lendo-as do ambiente, o que funciona independentemente
|
||||
de você estar usando o PHP como um módulo do <productname>Apache</productname> ou não. Utilize
|
||||
a função <function>phpinfo</function> para ver uma lista de todas as
|
||||
<link linkend="language.variables.predefined">variáveis de ambiente</link> disponíveis.
|
||||
</para>
|
||||
</note>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- EN-Revision: ad8e0151314c98ae54244ce625ed41cf14798bed Maintainer: ae Status: ready --><!-- CREDITS: ae, fabioluciano -->
|
||||
<!-- EN-Revision: d278431ef5e561787093a7b2679327a615b09367 Maintainer: ae Status: ready --><!-- CREDITS: adiel, ae, fabioluciano -->
|
||||
<!-- splitted from ./en/functions/apache.xml, last change in rev 1.2 -->
|
||||
<refentry xml:id="function.apache-response-headers" xmlns="http://docbook.org/ns/docbook">
|
||||
<refnamediv>
|
||||
@@ -10,51 +10,19 @@
|
||||
<refsect1 role="description">
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<type>array</type><methodname>apache_response_headers</methodname>
|
||||
<type class="union"><type>array</type><type>false</type></type><methodname>apache_response_headers</methodname>
|
||||
<void/>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
Obtém todos os cabeçalhos de resposta.
|
||||
Obtém todos os cabeçalhos de resposta. Funciona na
|
||||
CLI e nos servidores web Apache, FastCGI e FPM.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="returnvalues">
|
||||
&reftitle.returnvalues;
|
||||
<para>
|
||||
Um array de todos os cabeçalhos de resposta do Apache em sucesso, ou &return.falseforfailure;.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="changelog">
|
||||
&reftitle.changelog;
|
||||
<para>
|
||||
<informaltable>
|
||||
<tgroup cols="2">
|
||||
<thead>
|
||||
<row>
|
||||
<entry>&Version;</entry>
|
||||
<entry>&Description;</entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody>
|
||||
<row>
|
||||
<entry>5.5.7</entry>
|
||||
<entry>
|
||||
Esta função tornou-se disponível no CLI.
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>5.4.0</entry>
|
||||
<entry>
|
||||
Esta função tornou-se disponível no FastCGI. Anteriormente ela só
|
||||
era suportada com o PHP instalado como um módulo do Apache ou como um
|
||||
<link linkend="book.nsapi">módulo NSAPI</link> nos servidores
|
||||
Netscape/iPlanet/SunONE.
|
||||
</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</informaltable>
|
||||
Um array de todos os cabeçalhos de resposta do Apache em caso de sucesso, ou &return.falseforfailure;.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- EN-Revision: ad8e0151314c98ae54244ce625ed41cf14798bed Maintainer: ae Status: ready --><!-- CREDITS: ae, fabioluciano -->
|
||||
<!-- EN-Revision: e41806c30bf6975e452c0d4ce35ab0984c2fa68c Maintainer: ae Status: ready --><!-- CREDITS: ae, fabioluciano, adiel -->
|
||||
<!-- splitted from ./en/functions/apache.xml, last change in rev 1.2 -->
|
||||
<refentry xml:id="function.getallheaders" xmlns="http://docbook.org/ns/docbook">
|
||||
<refnamediv>
|
||||
<refname>getallheaders</refname>
|
||||
<refpurpose>Obtém todos os cabeçalhos HTTP</refpurpose>
|
||||
<refpurpose>Obtém todos os cabeçalhos da requisição HTTP</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsect1 role="description">
|
||||
@@ -27,7 +27,7 @@
|
||||
&reftitle.returnvalues;
|
||||
<para>
|
||||
Um array associativo de todos cabeçalhos HTTP da requisição atual, ou
|
||||
&false; em falha.
|
||||
&false; em caso de falha.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
@@ -44,18 +44,9 @@
|
||||
</thead>
|
||||
<tbody>
|
||||
<row>
|
||||
<entry>5.5.7</entry>
|
||||
<entry>7.3.0</entry>
|
||||
<entry>
|
||||
Esta função tornou-se disponível no servidor CLI.
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>5.4.0</entry>
|
||||
<entry>
|
||||
Esta função tornou-se disponível no FastCGI. Anteriormente ela
|
||||
era suportada no PHP intalado como módulo do Apache ou como um
|
||||
<link linkend="book.nsapi">módulo NSAPI</link> nos servidores
|
||||
Netscape/iPlanet/SunONE.
|
||||
Esta função tornou-se disponível na SAPI FPM.
|
||||
</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
@@ -68,7 +59,7 @@
|
||||
&reftitle.examples;
|
||||
<para>
|
||||
<example>
|
||||
<title>Exemplo da função <function>getallheadres</function></title>
|
||||
<title>Exemplo da função <function>getallheaders</function></title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- EN-Revision: 5b53e0d1772a256cbfa55f6abba783d32f6a9deb Maintainer: fernandoc Status: revision --><!-- CREDITS: fernandoc, adiel -->
|
||||
<!-- EN-Revision: 5e6356373cdbfcefcbecddf3cfd7e61a2159153e Maintainer: fernandoc Status: revision --><!-- CREDITS: fernandoc, adiel -->
|
||||
<refentry xml:id="function.get-magic-quotes-gpc" xmlns="http://docbook.org/ns/docbook">
|
||||
<refnamediv>
|
||||
<refname>get_magic_quotes_gpc</refname>
|
||||
<refpurpose>Obtém a configuração atual de magic quotes gpc</refpurpose>
|
||||
<refpurpose>Obtém a configuração atual de magic_quotes_gpc</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
&warn.deprecated.function-7-4-0;
|
||||
&warn.deprecated.function-7-4-0.removed-8-0-0;
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsect1 role="description">
|
||||
@@ -17,24 +17,14 @@
|
||||
<void/>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
Retorna a configuração atual definida para <link
|
||||
linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link>
|
||||
</para>
|
||||
<para>
|
||||
Lembre-se que a configuração <link linkend="ini.magic-quotes-gpc">
|
||||
magic_quotes_gpc</link> não irá funcionar em runtime.
|
||||
</para>
|
||||
<para>
|
||||
Para mais informação sobre magic_quotes, veja a
|
||||
<link linkend="security.magicquotes">seção de segurança</link>.
|
||||
Sempre retorna &false;.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="returnvalues">
|
||||
&reftitle.returnvalues;
|
||||
<para>
|
||||
Retorna 0 se magic quotes gpc está off, 1 caso contrário.
|
||||
Ou sempre retorna &false; a partir do PHP 5.4.0.
|
||||
Sempre retorna &false;.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
@@ -53,13 +43,7 @@
|
||||
<row>
|
||||
<entry>7.4.0</entry>
|
||||
<entry>
|
||||
This function has been deprecated.
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>5.4.0</entry>
|
||||
<entry>
|
||||
Always returns &false; because the magic quotes feature was removed from PHP.
|
||||
Esta função está obsoleta.
|
||||
</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
@@ -68,38 +52,6 @@
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="examples">
|
||||
&reftitle.examples;
|
||||
<para>
|
||||
<example>
|
||||
<title>Exemplo <function>get_magic_quotes_gpc</function></title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
// If magic quotes are enabled
|
||||
echo $_POST['lastname']; // O\'reilly
|
||||
echo addslashes($_POST['lastname']); // O\\\'reilly
|
||||
|
||||
// Usage across all PHP versions
|
||||
if (get_magic_quotes_gpc()) {
|
||||
$lastname = stripslashes($_POST['lastname']);
|
||||
}
|
||||
else {
|
||||
$lastname = $_POST['lastname'];
|
||||
}
|
||||
|
||||
// If using MySQL
|
||||
$lastname = mysql_real_escape_string($lastname);
|
||||
|
||||
echo $lastname; // O\'reilly
|
||||
$sql = "INSERT INTO lastnames (lastname) VALUES ('$lastname')";
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="seealso">
|
||||
&reftitle.seealso;
|
||||
<para>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: b35940f9fdd8fc4f71b0fbb2beef2f908ee2df19 Maintainer: felipe Status: ready --><!-- CREDITS: fernandoc -->
|
||||
<!-- EN-Revision: 038bdb1d98c2481e291616a310945b38523965da Maintainer: felipe Status: ready --><!-- CREDITS: fernandoc, adiel -->
|
||||
<book xml:id="book.mysqli" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<?phpdoc extension-membership="bundledexternal" ?>
|
||||
|
||||
@@ -51,7 +51,6 @@
|
||||
&reference.mysqli.constants;
|
||||
&reference.mysqli.notes;
|
||||
&reference.mysqli.summary;
|
||||
&reference.mysqli.examples;
|
||||
&reference.mysqli.mysqli;
|
||||
&reference.mysqli.mysqli-stmt;
|
||||
&reference.mysqli.mysqli-result;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: f581e88c2a613d5f72c76a8624fa6a472a180293 Maintainer: none Status: ready -->
|
||||
<!-- EN-Revision: c40f07c937efd99aa9ffcba126977e7536d1c2fd Maintainer: none Status: ready --><!-- CREDITS: adiel -->
|
||||
|
||||
<book xml:id="book.reflection" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<?phpdoc extension-membership="core" ?>
|
||||
@@ -22,23 +22,27 @@
|
||||
ser descobertos e corrigidos.
|
||||
</para>
|
||||
</preface>
|
||||
|
||||
|
||||
&reference.reflection.setup;
|
||||
&reference.reflection.constants;
|
||||
&reference.reflection.examples;
|
||||
&reference.reflection.extending;
|
||||
&reference.reflection.reflection;
|
||||
&reference.reflection.reflectionclass;
|
||||
&reference.reflection.reflectionclassconstant;
|
||||
&reference.reflection.reflectionzendextension;
|
||||
&reference.reflection.reflectionextension;
|
||||
&reference.reflection.reflectionfunction;
|
||||
&reference.reflection.reflectionfunctionabstract;
|
||||
&reference.reflection.reflectionmethod;
|
||||
&reference.reflection.reflectionnamedtype;
|
||||
&reference.reflection.reflectionobject;
|
||||
&reference.reflection.reflectionparameter;
|
||||
&reference.reflection.reflectionproperty;
|
||||
&reference.reflection.reflectiontype;
|
||||
&reference.reflection.reflectionuniontype;
|
||||
&reference.reflection.reflectiongenerator;
|
||||
&reference.reflection.reflectionreference;
|
||||
&reference.reflection.reflector;
|
||||
&reference.reflection.reflectionexception;
|
||||
|
||||
|
||||
@@ -1,237 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 5b53e0d1772a256cbfa55f6abba783d32f6a9deb Maintainer: narigone Status: revision --><!-- CREDITS: narigone, thiago, adiel -->
|
||||
<chapter xml:id="security.magicquotes" xmlns="http://docbook.org/ns/docbook">
|
||||
<title>Magic Quotes</title>
|
||||
&warn.deprecated.feature-5-3-0.removed-5-4-0;
|
||||
<para>
|
||||
Magic Quotes é um processo de inserção automática de caracteres de escape (\)
|
||||
em todos os dados indo para o script <acronym>PHP</acronym>. É preferível escrever código com
|
||||
essa opção desligada e adicionar esses caracteres manualmente quando necessário.
|
||||
</para>
|
||||
|
||||
<sect1 xml:id="security.magicquotes.what">
|
||||
<title>O que são Magic Quotes</title>
|
||||
&warn.deprecated.feature-5-3-0.removed-5-4-0;
|
||||
<para>
|
||||
Quando ligada, qualquer <literal>'</literal> (aspas simples), <literal>"</literal>
|
||||
(aspas duplas), <literal>\</literal> (barra invertida) e <literal>NULL</literal>
|
||||
será colocado uma barra-invertida antes (' vira \') automaticamente. Isso é identico
|
||||
ao que a função <function>addslashes</function> faz.
|
||||
</para>
|
||||
<para>
|
||||
Existem três diretivas relacionadas a Magic Quotes:
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Afeta os dados de requisições <acronym>HTTP</acronym> GET, POST, e COOKIE). Não pode ser alterada
|
||||
em tempo de execução e tem o valor padrão <emphasis>on</emphasis> no <acronym>PHP</acronym>.
|
||||
</simpara>
|
||||
<simpara>
|
||||
Veja também <function>get_magic_quotes_gpc</function>.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<link linkend="ini.magic-quotes-runtime">magic_quotes_runtime</link>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Se habilitada, a maioria das funções que retorna dados de uma fonte externa,
|
||||
incluindo bancos de dados e arquivos de texto, serão alterados.
|
||||
Pode ser alterado em tempo de execução e tem o valor padrão de <emphasis>off</emphasis>
|
||||
no <acronym>PHP</acronym>.
|
||||
</simpara>
|
||||
<simpara>
|
||||
Veja também <function>set_magic_quotes_runtime</function> e
|
||||
<function>get_magic_quotes_runtime</function>.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
magic_quotes_sybase <!-- to be removed later -->
|
||||
</simpara>
|
||||
<simpara>
|
||||
Se habilitada, uma aspa simples é usada como caracter de escape quando
|
||||
encontrar outra aspa simples (' vira ''). Se ligada, sobrepõe completamente
|
||||
<link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link>. Ligar
|
||||
ambas as diretivas significa que apenas aspas simples são substituídas por
|
||||
<literal>''</literal>. Aspas duplas, barras invertidas e NULLs
|
||||
permanecerão intocados e não serão escapados.
|
||||
</simpara>
|
||||
<simpara>
|
||||
Veja também <function>ini_get</function> para pegar esse valor.
|
||||
</simpara>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect1>
|
||||
|
||||
<sect1 xml:id="security.magicquotes.why">
|
||||
<title>Porque nós usamos Magic Quotes</title>
|
||||
&warn.deprecated.feature-5-3-0.removed-5-4-0;
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<simpara>
|
||||
Não existe mais razão para usar magic quotes porque não
|
||||
é mais uma parte suportada do <acronym>PHP</acronym>. Entretanto, a função existe e ajuda
|
||||
alguns iniciantes a contruir um código melhor(mais seguro).
|
||||
Mas, ao lidar com código que utiliza este recurso
|
||||
é melhor atualizar o código do que ativar magic quotes.
|
||||
</simpara>
|
||||
<simpara>
|
||||
Assim, porque isso existe? Simples, para ajuda a previnir
|
||||
<link linkend="security.database.sql-injection">injeção de SQL</link>.
|
||||
Os desenvolvedores de hoje estão mais a par de segurança e acabam usando
|
||||
mecanismos especificos do banco de dados para escapar e/ou
|
||||
comandos preparados ao invés de depender de coisas como magical quotes.
|
||||
</simpara>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect1>
|
||||
|
||||
<sect1 xml:id="security.magicquotes.whynot">
|
||||
<title>Por que não usar Magic Quotes?</title>
|
||||
&warn.deprecated.feature-5-3-0.removed-5-4-0;
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<simpara>
|
||||
Portabilidade
|
||||
</simpara>
|
||||
<simpara>
|
||||
Presumir que ela está ligada, ou desligada, afeta portabilitade. Use
|
||||
<function>get_magic_quotes_gpc</function> para verificar isso e codifique
|
||||
de acordo com a situação.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
Performance
|
||||
</simpara>
|
||||
<simpara>
|
||||
Como nem todos os dados escapados são inseridos em um
|
||||
banco de dados, existe uma perda de performance por escapar todos os dados.
|
||||
Chamar funções de escape (como
|
||||
<function>addslashes</function>) em tempo de execução é mais eficiente.
|
||||
</simpara>
|
||||
<simpara>
|
||||
Embora o arquivo <filename>php.ini-dist</filename> habilita essas diretivas
|
||||
por padrão, <filename>php.ini-recommended</filename> desabilita ela.
|
||||
Essa recomendação é principalmente por razões de performance.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
Inconviniência
|
||||
</simpara>
|
||||
<simpara>
|
||||
Porque nem todos os dados precisam ter caracteres de escape inseridos, é irritante
|
||||
ver caracteres de escape onde não deviam. Por exemplo, mandar um e-mail por um formulário, e
|
||||
ver um monte de \' na mensagem. Para consertar isso, pode ser necessário o
|
||||
uso excessivo da função <function>stripslashes</function>.
|
||||
</simpara>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect1>
|
||||
|
||||
<sect1 xml:id="security.magicquotes.disabling">
|
||||
<title>Desabilitando Magic Quotes</title>
|
||||
<para>
|
||||
A diretiva <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link>
|
||||
só pode ser desabilita em nível de sistema, e não em tempo de
|
||||
execução. Em outras palavras, uso da função <function>ini_set</function>
|
||||
não é uma opção.
|
||||
</para>
|
||||
<para>
|
||||
<example>
|
||||
<title>Desabilitando magic quotes no lado do servidor</title>
|
||||
<para>
|
||||
Um exemplo que configuração dessa diretiva para
|
||||
<literal>Off (Desligada)</literal> no arquivo &php.ini;. Para detalhes adicionais, leia a
|
||||
seção do manual entitulada <link linkend="configuration.changes">Como mudar
|
||||
os valores das configurações</link>.
|
||||
</para>
|
||||
<screen>
|
||||
<![CDATA[
|
||||
; Magic quotes
|
||||
;
|
||||
|
||||
; Magic quotes para dados vindos via GET/POST/Cookie.
|
||||
magic_quotes_gpc = Off
|
||||
|
||||
; Magic quotes para dados gerados em tempo de execução,ex.: dados vindo de SQL, de chamadas à exec(), etc.
|
||||
magic_quotes_runtime = Off
|
||||
|
||||
; Usar magic quotes no estilo Sybase (escapar ' com '' ao invés de \').
|
||||
magic_quotes_sybase = Off
|
||||
]]>
|
||||
</screen>
|
||||
<para>
|
||||
Se acesso à configuração do servidor não estiver disponível, uso do arquivo
|
||||
<filename>.htaccess</filename> também é uma opção. Por exemplo:
|
||||
</para>
|
||||
<screen>
|
||||
<![CDATA[
|
||||
php_flag magic_quotes_gpc Off
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
</para>
|
||||
<para>
|
||||
No interesse de escrever código portável (código que funciona em
|
||||
qualquer ambiente), como onde configurar a opção em nível de servidor não for
|
||||
possível, aqui está um exemplo de como desabilitar <link linkend="ini.magic-quotes-gpc">
|
||||
magic_quotes_gpc</link> em tempo de execução. Esse método é ineficiente
|
||||
então é preferível configurar as diretivas apropriadas em outros lugares.
|
||||
</para>
|
||||
<para>
|
||||
<example>
|
||||
<title>Desabilitando magic quotes em tempo de execução</title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
if (get_magic_quotes_gpc()) {
|
||||
$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
|
||||
while (list($key, $val) = each($process)) {
|
||||
foreach ($val as $k => $v) {
|
||||
unset($process[$key][$k]);
|
||||
if (is_array($v)) {
|
||||
$process[$key][stripslashes($k)] = $v;
|
||||
$process[] = &$process[$key][stripslashes($k)];
|
||||
} else {
|
||||
$process[$key][stripslashes($k)] = stripslashes($v);
|
||||
}
|
||||
}
|
||||
}
|
||||
unset($process);
|
||||
}
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
</chapter>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
sgml-omittag:t
|
||||
sgml-shorttag:t
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-indent-step:1
|
||||
sgml-indent-data:t
|
||||
indent-tabs-mode:nil
|
||||
sgml-parent-document:nil
|
||||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||||
sgml-exposed-tags:nil
|
||||
sgml-local-catalogs:nil
|
||||
sgml-local-ecat-files:nil
|
||||
End:
|
||||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||||
vim: et tw=78 syn=sgml
|
||||
vi: ts=1 sw=1
|
||||
-->
|
||||
Reference in New Issue
Block a user