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?

Popolo
fonte

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.
Pascal MARTIN
fonte
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
Nefski
fonte
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

EternalHour
fonte
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"
Technotronic
fonte
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.

Błażej Krzakala
fonte
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.

Marco DG
fonte
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".

Volomike
fonte
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.

Prima Putra
fonte
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.
Anjani Barnwal
fonte
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
Cajado
fonte
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.

Mehmet F Erten
fonte
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.

Klesun
fonte
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.

Ninad Kulkarni
fonte
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.

François Breton
fonte
0

Procure a extensão exata para a sua versão do PHP aqui

Martin Kinuthia
fonte
1
Por que usar drivers da Microsoft para PHP para SQL Server? Não é disso que se trata esta questão!
csabinho 19/11/19
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

newProgramm3r
fonte
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.

Dharmendra Shah
fonte
-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.

Chetam Okafor
fonte