A mensagem “Call to undefined function nome()” diz que o código chamou uma função que o PHP desta pasta não tem. Quase sempre é uma extensão que está desligada nesta versão do PHP, e liga-se em Select PHP Version. A palavra do início do nome da função diz-lhe qual.
Não é uma função “desactivada” por nós: nenhuma função do PHP está desactivada neste servidor (veja exec e shell_exec). É uma função que não foi carregada.
Da função à extensão
| A função começa por… |
Extensão a ligar |
| mb_ (mb_strlen, mb_substr) |
mbstring |
| curl_ |
curl |
| imagecreate…, imagejpeg… |
gd (ou imagick, para o Imagick) |
| bcadd, bcmul… |
bcmath |
| gmp_ |
gmp |
| pg_ (pg_connect) |
pgsql. O PostgreSQL existe; o módulo vem desligado. |
| imap_, ldap_ |
imap, ldap |
| mysql_ (mysql_connect) |
Nenhuma: estas funções foram removidas do PHP 7. O código é antigo e tem de passar a mysqli ou PDO. Veja ligar ao MySQL pelo PHP. |
O mesmo vale para “Class not found”: Imagick, ZipArchive, SoapClient e Redis são classes de extensões (imagick, zip, soap, redis).
Corrigir, passo a passo
| 1 |
Anote o nome da função e o ficheiro que a chama, que vêm na mensagem.
|
|
| 2 |
Confirme que versão do PHP corre naquela pasta (veja ver e ajustar a configuração do PHP). É a causa mais comum de a extensão “estar ligada e não estar”: ligou-a numa versão e o site corre noutra.
|
|
| 4 |
Recarregue a página que dava o erro. Se continua, confirme num ficheiro com <?php phpinfo(); que a extensão aparece carregada.
|
|
Não sabe a que extensão pertence uma função? Procure o nome dela no php.net: a página de cada função diz a que extensão pertence e a partir de que versão do PHP existe. É mais seguro do que ligar extensões às cegas. E se a extensão não está na lista dessa versão do PHP, experimente outra versão; uma aplicação que exige uma extensão que a conta não oferece é um caso para um VPS.
|
Mudou a versão do PHP e o erro apareceu agora? Cada versão tem o seu conjunto de extensões ligadas. A que tinha marcada na versão anterior não passa para a nova: marque-a de novo. Veja mudar a versão do PHP sem partir o site.
|
|
Uma extensão em falta pode ser um código velho demais. Se a função desapareceu do próprio PHP (é o caso do mysql_*, e de each() e create_function() no PHP 8), nenhuma caixa a faz voltar. Actualize a aplicação ou, enquanto não o puder fazer, use uma versão mais antiga do PHP só para essa pasta.
|
PRODUTO RECOMENDADO Alojamento de sites com cPanel Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 321,75 MT/mês (plano de 3 anos, com cupão) Ver planos |