Aviso de PHP: inicialização do PHP: não é possível carregar a biblioteca dinâmica


94

Eu executo um script PHP e recebo este erro:

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20090626/ixed.5.2.lin' - / usr / local / lib / php / extensions /no-debug-non-zts-20090626/ixed.5.2.lin: não é possível abrir o arquivo de objeto compartilhado: Não existe esse arquivo ou diretório em Desconhecido na linha 0

O que isso significa?

Respostas:


55

Isso significa que há uma linha extension=...ou zend_extension=...em um de seus arquivos de configuração php (php.ini ou outro próximo a ele) que está tentando carregar essa extensão:ixed.5.2.lin

Infelizmente, esse arquivo ou caminho não existe ou as permissões estão incorretas.

  1. Tente pesquisar nos .iniarquivos que são carregados pelo PHP ( phpinfo()pode indicar quais são) - um deles deve tentar carregar essa extensão.
  2. Corrija o caminho para o arquivo ou comente a linha correspondente.

6
Estou recebendo esse erro também, mas meu site ainda funciona - essa é a parte mais estranha. Para esse tipo de erro, eu suporia que o php travaria desde o início. Em vez disso, recebo minha página, mas meu logger está registrando esse erro. Estranho né?
BT

1
No php.ini (/etc/php.ini no meu caso), comentei a linha extension = php_pdo_mysql.dll e reiniciei o Apache que resolveu meu problema e se livrou dos avisos. (Mac, Maverick)
ola

Corrija o caminho de que caminho estamos falando?
prats1411

3. ou instale a extensão esperada ausente
Andrew

@ prats1411 no arquivo ini: extension = [caminho aqui]
Andrew

37

Se você estiver no Linux, poderá encontrar todos os arquivos de configuração carregados digitando no shell:

php -r "print phpinfo();" | grep ".ini"

ATUALIZAÇÃO: conforme mencionado nos comentários, isso pode ser ainda mais preciso:

php -i | grep ini

5
php -i | grep inideve funcionar bem também (não há necessidade de imprimir o phpinfo quando você tiver um argumento de comando para isso)
YorickH

1
Eu tive um erro semelhante, mas phpinfo()não listei nenhum arquivo ini problemático. php -i | grep inicomo sugerido por YorickH funcionou para mim. Isso listará as bibliotecas carregadas para a CLI e, como se viu, o arquivo ini que causou o aviso estava no diretório CLI no meu caso.
DaneeL

7
que tal php --inilistar todos os arquivos ini
OzzyCzech

17

Se você apenas deseja que o erro desapareça e não precisa da extensão, comente a linha php.ini. Mas se você realmente deseja corrigir o problema, aqui estão algumas informações adicionais.

Existem várias causas para isso com base no módulo exato, mas também existem algumas diretrizes gerais.

  1. Abra phpinfo()e procure extension_dirna Coreseção. É aqui que seus módulos devem estar localizados.

Por exemplo, /usr/lib/php/modulespara Unix / Linux.

  1. Se o arquivo realmente existir, verifique se as permissões são adequadas.
  2. Se o arquivo não existir, use os recursos abaixo para instalá-lo.

Instalação em * nix (PEAR)
Instalação de extensões no Windows


Estou tentando instalar através deste módulo pera, mas quando eu executo perl install <module>eu tenhoCan't open perl script "install": File or Directory not found
Fabiotk

É difícil saber o problema, verifique seus caminhos e permissões.
EternalHour

se estiver em um contêiner, tentedocker-php-ext-install <package>
jiggunjer

13

phpStom com XAMPP

TL; DR Exceto para verificar se os arquivos existem, você pode precisar adicionar a letra da unidade a alguns registros em seu arquivo php.ini

De repente, comecei a ter problemas ao usar o phpStorm 7 para depurar php com xampp e xdebug. Ao tentar definir o intellij interperter como xampps php recebi muitos avisos como o da pergunta, por exemplo:

Não foi possível carregar a biblioteca dinâmica '/xampp/php/ext/php_bz2.dll'

Por alguma razão, tive que adicionar a letra da minha unidade aos registros de extension_dir e browscap no arquivo php.ini:

extension_dir = "\xampp\php\ext"
browscap = "\xampp\php\extras\browscap.ini"

para

extension_dir = "e:\xampp\php\ext"
browscap = "e:\xampp\php\extras\browscap.ini"

2
Isso corrigiu para mim no Windows 10.
Justin Eldracher

1
Isso corrigiu para mim no Windows 7. Muito obrigado
Paramjeet

6

php -r "echo php_ini_loaded_file();"

Irá mostrar no CLI o arquivo ini atual carregado, procure lá por Sua extensão, o caminho para ele está incorreto.


4

Carregando .dll no Linux

Encontrei esta mensagem de aviso enquanto tentava instalar uma extensão php através do arquivo php.ini ;

até eu descobrir que você não pode carregar extensões .dll no Linux,

mas você tem que comentar as extensões que deseja importar ;extension= ... .dlle instalá-lo corretamente viasudo apt-get install php-...

observação : ...é o nome da extensão que você deseja ativar.


Exatamente, para mim estava simplesmente faltando a instalação do módulo - eu estava instalando o phpPgAdmin e o que eu precisava instalar explicitamente era sudo apt install php-pgsqluma versão específica do php sudo apt install php7.1-pgsql(mude 7.1 para sua versão php)
jave.web

3

Observe que você também pode obter este erro se sua biblioteca PHP não tiver a permissão de abertura de diretório "outro". No meu caso particular, notei isso ao usar php -la verificação de sintaxe de um script em meu editor de texto. Isso significava que, como minha conta se chamava "volomike", essa conta não tinha permissão para executar as bibliotecas nas quais o phpcomando dependia.

Por exemplo, no Ubuntu 14.04, instalei o PHP5 automaticamente no caminho /usr/lib/php5/20121212+lfs. No entanto, como estava trabalhando em C ++ na construção de alguns objetos compartilhados, baguncei as permissões de diretório e baguncei as coisas de forma que contas não raiz não tivessem as permissões de execução de diretório (diretório aberto) para visualizar /usr/lib/php5/20121212+lfs. Então, digitei o seguinte comando para corrigir esse problema:

sudo chmod o+x /usr/lib/php5/20121212+lfs.

Agora, quando faço php -l example.phpcomo um usuário não root, nunca mais me ocorre esse problema de "Não habilitado para carregar a biblioteca dinâmica".


Esta foi a solução exata para mim, usando o Ubuntu 16.10. Certifique-se de alterar a extensão "extension" para .so ao usar o Linux (a configuração padrão estava me dando .dll)
mroesler

Estou usando linux mint 18 e isso ainda é válido
Dika

2

Eu tive o mesmo problema no XAMPP para Windows quando tento instalar o composer. Eu fiz php -ve erro de lançamento de php:

Não foi possível carregar a biblioteca dinâmica '/xampp/php/ext/php_bz2.dll'

Demorei um pouco até perceber que preciso configurar meu XAMPP. Então eu corro setup_xampp.bate o php volta a funcionar como um encanto.


2

Eu tive o mesmo problema no XAMPP para Windows10 quando tento instalar o composer.

Não foi possível carregar a biblioteca dinâmica '/xampp/php/ext/php_bz2.dll'

Então siga estes passos

  1. basta abrir sua current_xampp_containing_drive: \ xampp (default_xampp_folder) \ php \ php.ini no texteditor (como o notepad ++)
  2. agora apenas encontre - o current_xampp_containing_drive: \ xampp existe?
  3. caso contrário, encontre "extension_dir" e obtenha o nome da unidade (c, d ou a unidade desejada) como.

extension_dir = "F: \ xampp731 \ php \ ext" (aqui finded_drive_name_from_the_file é F)

  1. novamente substitua por finded_drive_name_from_the_file: \ xampp por current_xampp_containing_drive: \ xampp e salve.
  2. agora reinicie o andamento da instalação do composer, acho que seu problema estará resolvido.

1

Eu tive esse erro em vários módulos quando estava executando diferentes versões do PHP lado a lado no meu servidor. Para resolver isso, precisei instalar os pacotes que não consegui encontrar para aquela versão específica do PHP. Então, por exemplo, se eu vi: -

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20160303/xml.so'

Eu instalaria a biblioteca para a versão PHP especificamente: -

sudo apt-get install php7.1-xml

E então reinicie o Apache. Consertou para mim. Você pode verificar sua versão assim: -

php -v

1

A partir de Windows 10 XAMPPagora instalei LAMPP (XAMPP)no Ubuntu. Windows XAMPPtinha muito menos para configurar em comparação com o MAC (iOS), mas agora com o Linux Ubuntu tive um pouco mais, pois há mais coisas acontecendo no Linux (uma coisa boa).

Eu confundi e ativei mysqli.dll(e mysql.dll: apagar "#" em/etc/php/7.2/cli/php.ini

Comecei a receber a PHP Warning: PHP Startup: Unable to load dynamic librarymensagem relacionada a dll. Comentei mysql(and i).dllno mesmo arquivo, mas a mensagem não foi embora até que comentei "" em /opt/lampp/etc/php.ini.

Looks como XAMPP lê php.iniarquivo /etc/php/7.2/clie faz a modificação na php.inide /opt/lampp/etc. (; extension = php_pdo_mysql.dll após ";" reiniciar o Apache e nenhuma mensagem mais.


1

No meu caso, recebi este erro porque baixei uma versão thread-safe da dll (infixada com -ts-), mas minha instalação php do php era não-thread-safe (infixada com -nts-). Baixar a versão correta da dll, que corresponde exatamente à minha versão de instalação do php, corrigiu o problema.


1
Para verificar a configuração thread-safe do servidor, consulte phpinfo () e thread-safetyhabilitado / desabilitado. Teve o mesmo erro ao contrário, baixei nts quando configurado para ts.
Andy

0

Eu encontrei um erro semelhante. O erro que cometi foi usar o nome do "controlador" como "Páginas" em vez de "páginas" no meu url.


0

No Windows, pode ser um caminho errado em "Variáveis ​​de ambiente do sistema". O "caminho" para o diretório php.exe deve ser o correto.



0

O que eu fiz foi;

1 - Primeiro descubro qual versão do PHP estou usando através da função phpinfo ()

<?php   
    phpinfo();
?>

2 - A partir daí você encontrará a localização do seu arquivo de configuração (php.ini)

resultado do método phpinfo ()

3 - Abra esse arquivo

4 - Comente a linha semelhante à imagem abaixo

Pode ser um valor diferente, mas deve estar relacionado à extensão. Não sou especialista, mas esse processo me ajudou a resolver um problema semelhante.

insira a descrição da imagem aqui


0

'C: /PHP/5.2.13/ext \ php_mcrypt1.dll'

Eu diria que há algum erro de digitação em seu php.ini (o 1 extra). Talvez você esteja carregando um php.ini diferente do esperado (consulte a saída do php.ini para ter certeza).

Além disso, certifique-se de que php_mcrypt.dll e PHP:

Foram vinculados à mesma biblioteca de tempo de execução VC (normalmente msvcrt.dll para VC6 ou msvcrt90.dll para VC9) - use, por exemplo, o dependency walker para isso. Ambos são compilações de depuração ou ambas as compilações de lançamento Ambos têm ZTS habilitado ou ZTS desabilitado Para bibliotecas que dependem outras bibliotecas (DLLs), certifique-se de que estejam disponíveis (por exemplo, no mesmo diretório da extensão). O PHP deve fornecer erros de significado se alguma das três primeiras condições acima não for satisfeita, mas eu as escrevi mesmo assim porque não tenho certeza para PHP 5.2.


-1

Tive um problema semelhante e abaixo estão alguns dos avisos / erros.

Warning: PHP Startup: Unable to load dynamic library 'curl' (tried: C:\php\ext\curl 
(The specified module could not be found.), C:\php\ext\php_curl.dll (The specified 
module 
could not be found.)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'fileinfo' (tried: 
C:\php\ext\fileinfo (The specified module could not be found.), 
C:\php\ext\php_fileinfo.dll (The specified module could not be found.)) in Unknown on 
line 0

Se você verificar os avisos, verá que ele está procurando por extensões php no C:\php\ext\então, baixei o php para o C:\diretório e isso resolveu os problemas.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.