Wednesday 10 January 2018

Citações de forexpf mostram configurações de php


Descrição bool phpinfo (int que INFOALL) Produz uma grande quantidade de informações sobre o estado atual do PHP. Isso inclui informações sobre as opções e extensões de compilação do PHP, a versão do PHP, as informações do servidor e o ambiente (se compilado como um módulo), o ambiente PHP, as informações da versão do sistema operacional, os caminhos, os valores mestres e locais das opções de configuração, os cabeçalhos HTTP e o PHP Licença. Como cada sistema está configurado de forma diferente, phpinfo () é comumente usado para verificar as configurações e as variáveis ​​predefinidas disponíveis em um determinado sistema. Phpinfo () também é uma valiosa ferramenta de depuração, pois contém todos os dados EGPCS (Ambiente, GET, POST, Cookie, Servidor). Parâmetros A saída pode ser personalizada passando uma ou mais das seguintes constantes valores bit a bit somados juntos no opcional parâmetro. Pode-se também combinar as respectivas constantes ou valores de bits junto com o operador ou. Uma nota sobre o exemplo muito útil por jon no sitewizard dot ca. As seguintes afirmações: Declaração 1: phpinfoend (arraykeys (phpinfo)) match2 isset (match4). Array (match3, match4). Match3 Declaração 2: phpinfoend (arraykeys (phpinfo)) match2 Estas duas linhas produzirão o erro Padrões estritos: somente as variáveis ​​devem ser passadas por referência em. A raiz do erro está no uso incorreto da função final (). O código funciona, mas sim o erro mencionado. Para resolver esta tentativa usando as seguintes instruções: Declaração 1 revisão: chaves arraykeys (phpinfo) phpinfoend (keys) match2 isset (match4). Array (match3, match4). Match3 Declaração 2 revisão: chaves arraykeys (phpinfo) phpinfoend (keys) match2 Isso corrige o erro. Para embrulhar tudo em um exemplo: ltphp function quickdevinsightsphpinfo () obstart () phpinfo (11) phpinfo array (phpinfo gt array ()) if (pregmatchall ((: lth2gt (: lta name. gt) (.) (: Ltagt) Lth2gt) (: lttr (. Class.) Gtltthd (. Class.) Gt (.) Sltthdgt (: ltthd (. Class.) Gt (.) Sltthdgt (: ltthd (. Class.) Gt (.) Sltthdgt)) lttrgt ) S. Obgetclean (), matches. PREGSETORDER)) foreach (combina como correspondência) se (strlen (match 1)) phpinfo match 1 array () elseif (isset (match 3)) keys1 arraykeys (phpinfo) phpinfo end (keys1) Match 2 isset (partida 4). Array (match 3, match 4). Match 3 else keys1 arraykeys (phpinfo) phpinfo end (keys1) match 2 if (empty (phpinfo)) foreach (phpinfo como nome gt seção) echo lth3gt name lth3gtnlttable classwp-list-table widefat fixed pagesgtn foreach (seção como chave gt val) if (IsArray (val)) eco lttrgtlttdgt chave lttdgtlttdgt val 0 lttdgtlttdgt val 1 lttdgtlttrgtn elseif (isstring (chave)) eco lttrgtlttdgt chave val lttdgtlttdgt lttdgtlttrgtn else echo lttrgtlttdgt val lttdgtlttrgtn eco lttablegtn else echo lth3gtSorry, a função phpinfo () não é acessível. Talvez, seja desabilitado, hrefphpmanualenfunction. phpinfo. php gtVeja a documentação. ltagtlth3gt gt Francamente, pensei no problema de adicionar esta nota porque o exemplo de jon no sitewizard dot ca é provavelmente o melhor na web e achou lamentável que isso Lança erros. Espero que isso seja útil para alguém. Eu precisava de uma maneira de percorrer rapidamente o phpinfo, que é uma grande lista de informações. Então aqui está. No topo, há uma lista com seções, as novas extensões de seção carregadas mantêm os links para as âncoras dos módulos carregados. As variáveis ​​da sessão de seção mostrarão as atuais sessões carregadas. Está usando o Domdocument para manipulação para que você tenha que carregar: ltphp obstart () exts getloadedextensions () phpinfo () phpinfo obgetcontents () obendclean () print phpinfo htmlstr phpinfo html novo DOMDocument () html - gt loadHTML (htmlstr) título html - gt GetElementsByTagName (título) - gt item (0) title - gt nodeValue Versão PHP. Phpversion () body html - gt getElementsByTagName (body) - gt item (0) body - gt setAttribute (estilo. Background-color: bege) corpo da tabela html - gt getElementsByTagName (tabela) - gt item (3) - gt nextSibling head html - gt getElementsByTagName (tabela) - gt item (0) - gt nextSibling obstart () gt lth2gtlta namesessionvariablesgtSessão de variáveisltagtlth2gt lttable border0 cellpadding2 width600gt lttr classhgtltthgtVariablesltthgtltthgtValueltthgtlttrgt ltphp foreach (SESSÃO como valor de chave gt) se (isbool (value)) value (value) true. Falso mais se (isarray (value)) value ltpregt. Printr (value. True). ltpregt else if (vazio (valor) valor ampamp 0) valor ltigtno valueltigt gt lttrgt lttd classegt ltkeygt lttdgt lttd classvgt ltvaluegt lttdgt lttrgt ltphp gt lttablegt lth2gtlta nameloadedextensionsgtloaded extensionsltagtlth2gt lttable border0 cellpadding2 width600gt lttr classhgtltthgtExtensionltthgtltthgtVersionltthgtlttrgt ltphp natcasesort (exts) foreach (exts como valor) versão Phpversion (value) gt lttrgt lttd classe stylewidth: 150pxgtlta hrefmodule ltvaluegt stylecolor: black background-color: ccccffgt ltvaluegt ltagtlttdgt lttd classvgt lt (vazio (versão)). LtigtUnknownltigt gt lttdgt lttrgt ltphp gt lttablegtltbr gt ltphp txtstr obgetcontents () obendclean () txt novo DOMDocument () txt - gt loadHTML (txtstr) txtbody txt - gt getElementsByTagName (body) - gt item (0) foreach (txtbody - gt childNodes como filho ) Child html - gt importNode (filho. Verdadeiro) table - gt parentNode - gt insertBefore (tabela filho.) H2 html - gt getElementsByTagName (h2) foreach (h2 como item) se (item - gt getElementsByTagName (a) - gt length 0 ) Item de valor - gt nodeValue item - gt nodeValue um html - gt createElement (a) a - gt setAttribute (nome. Strtolower (strreplace (.. Value))) a - gt nodeValue item do valor - gt appendChild (a) um item - Gt getElementsByTagName (a) - gt item (0) se (inarray (a - gt nodeValue. Exts)) menu strtolower (strreplace (.. A - gt nodeValue)) a - gt nodeValue topa html - gt createElement (a) se ( Inarray (a - gt nodeValue. Exts)) txt html - gt createTextNode ((Ir para o topo)) topa - gt appendChild (txt) topa - gt setAttribute (href. ) Else txt html - gt createTextNode ((Ir para a lista de extensões)) topa - gt appendChild (txt) topa - gt setAttribute (href. Loadedextensions) topa - gt setAttribute (estilo. Background-color: bege font-size: 12px margin-left : 5px margem-superior: -5px cor: preto) item - gt appendChild (topa) obstart () gt ltbr gt lttable border0 cellpadding2 width600gt lttr classhgtltth colspan2gtSectionsltthgtlttrgt lttrgt ltphp i 0 foreach (menu como elemento gt chave) print lttd classvgtlta href key stylebackground - color: cccccc cor: blackgt item ltagtlttdgt if (i 2) print lttrgtlttrgt i if (i 2) print lttd classvgtlttdgt gt lttrgt lttablegt ltphp txtstr obgetclean () txt novo DOMDocument () txt - gt loadHTML (txtstr) txtbody txt - gt getElementsByTagName (Corpo) - gt item (0) foreach (txtbody - gt childNodes como filho) child html - gt importNode (child. True) table - gt parentNode - gt insertBefore (child. Head) print html - gt saveHTML () gt Depois de ler E tentando várias funções, eu poderia Nt encontre um que analise corretamente todas as configurações, tira qualquer tag html esquerdo e converte caracteres especiais em UTF8 (p. Amp039), então eu criei o meu próprio, melhorando os existentes: função phpinfo2array () entityToUtf8 function (entrada) phpmanualenfunction. html-entity-decode. php104617 return pregreplacecallback ((amp0-9), função (m), entrada) Função plainText (entrada) use (entityToUt8) retorno trim (htmlentitydecode (entityToUtf8 (striptags (entrada)))) titlePlainText função (entrada) use (plainText) return. plainText (entrada) phpinfo array (phpinfo gt array ()) Arraste tudo depois A tag lth1gtConfigurationlth1gt (outros h1s) se (pregmatch ((.lth1gtgtsConfiguration.) Lth1s, obgetclean (), matches)) return array () input matches1 combina array () if (pregmatchall ((: lth2.gt (: lta. gt) (: Lttr. gtltthd. gt (.) Sltthdgt (: ltthd. gt (.) Sltthdgt (: ltthd. gt (.) Sltthdgt)) lttrgt) s, entrada, correspondências, PREGSETORDER )) Foreach (combina como correspondência) fn strpos (match0, ltth) false. texto simples. TitlePlainText if (strlen (match1)) phpinfomatch1 array () elseif (isset (match3)) keys1 arraykeys (phpinfo) phpinfoend (keys1) fn (match2) isset (match4). Array (fn (match3), fn (match4)). Fn (match3) else keys1 arraykeys (phpinfo) phpinfoend (keys1) fn (match2) A saída parece ser assim (observe que os cabeçalhos também estão incluídos, mas são prefixados, por exemplo, Diretiva): Array (phpinfo gt Array (versão PHP de 0 gt 5.6.5 Sistema gt Darwin Calins-MBP 15.0.0 Darwin Kernel Versão 15.0.0: Qua 26 de agosto 19:41:34 PDT 2017 root: xnu-3247.1.106 5RELEASEX8664 x8664 Data de criação gt 19 de fevereiro de 2017 18:34:18 Registrado Stream Socket Transports gt tcp, udp, unix, udg, ssl, sslv3, sslv2, tls, tlsv1.0 Filtros de fluxo registrados gt zlib., Bzip2., Convert. iconv., String. rot13, string. toupper, string. tolower, String. striptags, convert., Consumed, dechunk 1 gt Este programa faz uso do Zend Scripting Language Engine: Zend Engine.) Apache2handler gt Array (Apache Version gt Apache2.4.16 (Unix) PHP5.6.5 OpenSSL0.9.8zg Apache API Version Gt 20170211 Administrador do servidor gt webmasterdummy-host2.example Nome do host: Port gt sitestacker. local: 0 Diretiva gt Array (0 gt Valor local 1 gt Master Valu E) Isto é necessário para obter uma validação W3C (XHTML1.0 Transitionnal). A saída de phpinfos é declarada com essa DTD: - ID do sistema tem a URL errada para validar. DTDxhtml1-transitional. dtd em vez de w3.orgTRxhtml1DTDxhtml1-transitional. dtd - Alguns nomes de módulos contém espaço e as funções de saída usam o nome em âncoras como ID e NAME. Esses atributos não podem ser validados assim (nome exclusivo apenas). Obstart () Capturar phpinfo () phpinfo () info trim (obgetclean ()) output Substituir espaço em branco em atributos ID e NAME. Se existe informação pregreplace ((idname) () () i. 123. info) infodoc new DOMDocument (1.0. Utf-8) Parse phpinfos output operator usado para evitar mensagens sobre entidades indefinidas ou use loadHTML em vez infodoc - gt loadXML (info) Doc - gt documentElement - gt appendChild (adicionando elemento HEAD para HTML doc - gt importNode (infodoc - gt getElementsByTagName (head) - gt item (0), true Com toda a subárvore)) doc - gt documentElement - gt appendChild (Adicionando o elemento BODY Para HTML doc - gt importNode (infodoc - gt getElementsByTagName (body) - gt item (0), true Com toda a subárvore)) Agora você obtém uma saída limpa e você pode validar. Echo (doc-gtsaveXML ()) OU eco (doc-gtsaveHTML ()) Por isso é fácil adicionar alguma declaração de estilo: style doc - gt getElementsByTagName (estilo) - gt item (0) style - gt appendChild (doc - gt CreateTextNode (ALGUNS NOVAS REGRAS CSS PARA ADICIONAR À FUNÇÃO OUTPUT)) para adicionar mais informações para exibir: body doc - gt getElementsByTagName (body) - gt item (0) elemento doc - gt createElement (p) element - gt appendChild (doc - gt createTextNode (ALGUNS NOVOS CONTENIDOS AO DISPLAY)) body - gt appendChild (elemento) para adicionar um novo cabeçalho: head doc - gt getElementsByTagName (head) - gt item (0) meta doc - gt createElement (meta) meta - gt setAttribute (Nome do autor) meta-gt setAttribute (content. arimbourg at ariworld dot eu) head - gt appendChild (meta) Como desejar, pegue o resto do resultado e adicione-o para depuração obgetclean () pre doc - gt createElement ( Div) ou pre pré-gt setAttribute (estilo. White-space: pre) para um elemento div, inútil com pre pré-gt AppendChild (doc - gt createTextNode (out)) body - gt appendChild (pré) doc - gt formatOutput true Para um bom indentation doc - gt saveXML () Tudo o que poderia ser feito com apenas RegExp, mas prefiro o uso de DOM para manipular documentos Eu queria uma função simples para converter a saída do phpinfo em uma matriz. É o que eu criei graças a muitas dicas de autores anteriores e ao arquivo de origem: php-5.2.6extstandardinfo. c Chame essa função como phpinfoarray () imprime a matriz, phpinfoarray (1) retorna a matriz para seu próprio processamento. Exemplo de Configuração do PHP de Produção gt Array (Versão PHP gt 5.2.6 PHP Egg gt PHPE9568F34-D428-11d2-A769-00AA001ACF42 Sistema gt Linux askapache 2.6.22.19-grsec3 Data de Criação gt Nov 11 2008 13:09:07 Configure Command gt. configure --prefixhomegrsecbinphp API do servidor gt FastCGI IPv6 Suporte gt habilitado Zend Egg gt PHPE9568F35-D428-11d2-A769-00AA001ACF42 Créditos PHP Egg gt PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000) mbstring gt Array (mbstring. httpinput gt pass mbstring. internalencoding gt Array (0 gt ISO-8859-1 1 gt sem valor) mbstring. language gt neutral) mcrypt gt Array (Versão gt 3.5.7 Api No gt 20031217) ltphp function phpinfoarray (return false) Andale Andale Yee-Hah obstart () phpinfo (1) seções explodem (lth2gt. Striptags (pi. Lth2gtltthgtlttdgt)) unset (seções 0) pi array () foreach (seções como seção) n substr (seção 0. strpos (seção. Lth2gt)) pregmatchall (S (: Lttdgt (.) Lttdgt) (: lttdgt (.) Lttdgt) (: lttdgt (.) Lttdgt) E, seção. Askapache. PREGSETORDER) f Oreach (askapache como m) pi n m 1 (isset (m 3) m 2 m 3) m 2: arrayslice (m. 2) retornar (retornar falso). Printr (pi). Pi Esta função analisa a saída phpinfo para obter detalhes sobre um módulo PHP. Ltphp parse php modules de phpinfo function parsePHPModules () obstart () phpinfo (INFOMODULES) s obgetcontents () obendclean () s striptags (s. Lth2ttgtlttdgt) s pregreplace (ltthgtgt (lt) ltthgt. Ltinfogt1ltinfogt. S) pregreplace (lttdgtgt (lttdgtgt) ) Lttdgt. Ltinfogt1ltinfogt. S) vTmp pregsplit ((lth2gtltlth2gt). S, - 1. PREGSPLITDELIMCAPTURE) array vModules () para (i 1 i lt count (vTmp) i) if (pregmatch (lth2gt (lt) lth2gt. VTmp i, VMat)) vName trim (vMat 1) vTmp2 explodir (n. VTmp i 1) foreach (vTmp2 AS vOne) vPat ltinfogt (lt) ltinfogt vPat3 vPat s vPat s vPat vPat2 vPat s vPat if (pregmatch (vPat3. VOne. VMat) ) VModules vName trim (vMat 1) array (trim (vMat 2), trim (vMat 3)) elseif (pregmatch (vPat2. VOne. VMat)) vModules vName trim (vMat 1) trim (vMat 2) return vModules gt Sample Output : Gd gt Array (GD Support gt habilitado GD Versão gt empacotado (2.0.28 compatível) FreeType Suporte gt habilitado FreeType Li Nkage gt com freetype FreeType Versão gt 2.1.9 T1Lib Suporte gt habilitado GIF Read Support gt habilitado GIF Criar Suporte gt habilitado JPG Suporte gt habilitado PNG Suporte gt habilitado WBMP Suporte gt habilitado XBM Suporte gt habilitado) data gt Array (data de suporte gt habilitado Fuso horário Versão do banco de dados gt 2005.14 Base de fuso horário gt interno Fuso horário padrão gt Diretriz AmericaLosAngeles gt Array (0 gt Valor local 1 gt Valor mestre) date. timezone gt Array (0 gt no value 1 gt no value)) ltphp Obtém uma função de configuração do módulo getModuleSetting (pModuleName . PSetting) vModules parsePHPModules () return vModules pModuleName pSetting gt Exemplo: getModuleSetting (gd, GD Version) retorna empacotado (compatível com 2.0.28) verifique este phripfo colorido e fantástico () obstart () phpinfo () phpinfo obgetcontents () obendclean ( ) Pregmatchall (0-9a-fA-F. Phpinfo. Rawmatches) para (i 0 i lt count (rawmatches 0) i) combina com rawmatches 0 i combina arrayunique (fósforos) j 0 foreach (combina como correspondência) r pesquisas j match for (I 0 i lt 6 i) r. Substr (hexvalue. Mtrand (0. 15), 1) substituições jr unset (r) para (i 0 i lt count (pesquisas) i) phpinfo strreplace (pesquisas. Substituições. Phpinfo) echo phpinfo gt Esta é uma pequena modificação para o Código anterior por código no adspeed dot com que extrai os módulos PHP como uma matriz. Eu usei-o no PHP 4.1.2 e falhou porque as marcas lth2gt também tinham um alinhador. Portanto, esta atualização altera o regex para essas tags: analise os módulos php da função phpinfo parsePHPModules () obstart () phpinfo (INFOMODULES) s obgetcontents () obendclean () s striptags (s. Lth2gtltthgtlttdgt) s pregreplace (ltthgtgt (lt) ltthgt. Ltinfogt1ltinfogt S) s pregreplace (lttdgtgt (lt) lttdgt. Ltinfogt1ltinfogt. S) vTmp pregsplit ((lth2gtgtltlth2gt). S, - 1. PREGSPLITDELIMCAPTURE) vModules array () para (i 1 i lt count (vTmp) i) if (pregmatch ( Lth2gtgt (lt) lth2gt. VTmp i, vMat)) vName trim (vMat 1) vTmp2 explodir (n. VTmp i 1) foreach (vTmp2 AS vOne) vPat ltinfogt (lt) ltinfogt vPat3 vPat s vPat s vPat vPat2 vPat s vPat if (PreMM (vMat) vMat (vMat 1) array (vMat 2), trim (vMat 3)) elseif (pregmatch (vPat2. VOne. VMat)) vModules vName trim (vMat 1) trim (VMat 2) retorna vModules gt Com base no exemplo elegante de SimonDs para ocultar o nome de usuário e a senha logados, whic H, de outra forma, aparece em texto simples, o seguinte deve funcionar para o PHP 5.4: ltphp start output buffering obstart () enviar phpinfo content phpinfo () obter phpinfo content html obgetcontents () liberar o buffer de saída obendclean () remover dados de autenticação se (isset (SERVER PHPAUTHUSER)) html strreplace (SERVER PHPAUTHUSER, protegido. Html) se (isset (SERVER PHPAUTHPW)) html strreplace (SERVER PHPAUTHPW, protegido html) Para remover itens adicionais, basta adicioná-los como acima. Como visualizar suas configurações de php usando uma página phpinfo Neste tutorial: Criar phpinfo Page View PHP Configurações O PHP possui muitas variáveis ​​ambientais que você pode atualizar conforme necessário. Por exemplo, talvez seja necessário atualizar seu php memorylimit para evitar que alguns scripts se esqueçam de memória. Para alterar esses valores, você deve primeiro poder ver o que eles são. Para fazer isso, você precisará criar uma página phpinfo. Uma página do phpinfo mostra todas as configurações do seu ambiente de php. Uma página phpinfo é simplesmente uma página php com o seguinte código: Como criar uma página phpinfo Se você não estiver familiarizado com a forma de criar uma página php, siga as etapas abaixo para criar uma página phpinfo usando seu Gerenciador de arquivos. Entre no seu cPanel. Abra seu Gerenciador de arquivos. Navegue até o diretório com o qual você está trabalhando. Isso é importante porque cada pasta pode realmente ser configurada para ter diferentes configurações de php. Neste exemplo, estamos visualizando as configurações de php para nosso domínio principal, então estamos navegando para a pasta publicichtml. No menu superior, clique em Novo arquivo. Quando solicitado o nome do arquivo, digite phpinfo. php (ele pode realmente ser nomeado qualquer coisa, phpinfo. php é simplesmente um nome comum para o arquivo). Encontre o arquivo phpinfo. php na sua lista de arquivos (ele deve ter atualizado automaticamente). Clique com o botão direito sobre ele e escolha Editar. Se você vir um prompt do Editor de texto, escolha utf-8 na lista suspensa e clique em Editar. Digite o seguinte texto: Como visualizar suas configurações do PHP Agora você pode acessar esta página no seu navegador. Se você criou o arquivo em sua pasta publichtml, então você visitara examplephpinfo. php. Os resultados devem ser semelhantes à imagem abaixo: Para encontrar o valor específico de uma configuração, procure na página o que você está procurando. Nesse caso, utilizamos o recurso de busca do nosso navegador (Ctrl f) e buscamos o limite de memória. O primeiro valor que você vê é o que está definido para o diretório atual (valor local) e o valor de configuração é o valor mestre. O valor local é a configuração real e é o valor importante, porque os valores locais substituirão o valor mestre: observe que sua página phpinfo possui muitas configurações de php que você não deseja transmitir para o mundo. Quando você terminar de usar o arquivo, certifique-se de excluí-lo. Outra rota que você pode pegar em vez de excluí-lo no entanto é nomear o arquivo algo diferente do phpinfo. php. Como phpinfo. php é um nome tão comum, os bots na web pesquisarão aleatoriamente arquivos chamados phpinfo. php. Definir o nome do arquivo para algo como 9823592374823.php nunca seria adivinhado por um bot (então ninguém nunca o acharia), porém pode ser difícil para você lembrar isso no futuro. Se você precisar alterar qualquer um desses valores, consulte nosso artigo: Como atualizar suas configurações php locais Servidores dedicados do PHP Hosting InMotion são fornecidos com PHP. Uma linguagem de programação popular usada por muitas plataformas CMS. Se você está interessado em administrar seu próprio servidor, leia mais sobre nossos planos de hospedagem dedicados.

No comments:

Post a Comment