web-dev-qa-db-fra.com

PHP extension impossible de charger la bibliothèque dynamique

J'ai installé LAMP. Pendant que j'exécute mon application, cela ne fonctionne pas et le journal des erreurs contient:

 PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/php_bcmath.so' - /usr/lib/php/20151012/php_bcmath.so: cannot open shared object file: No such file or directory in Unknown on line 0

Une erreur se produit pour chaque extension si je les active. J'utilise PHP 7.0.

J'ai essayé d'activer les extensions de cette façon mais cela ne fonctionne pas.

extension=/usr/lib/php/20151012/ php_bcmath.so

; ... or with a path:

extension=/usr/lib/php/20151012/ /usr/lib/php/20151012/php_bcmath.so

Je reçois juste au-dessus de la déclaration dans le journal des erreurs. Quand il ne peut pas ouvrir le fichier d'objet partagé quand il est en train de dire: No such file or directory. Est-ce que j'ai besoin de changer l'autorisation du répertoire d'extension ou quoi d'autre je peux m'en débarrasser? J'avais essayé d'autres questions mais ça ne marchait pas.

1
Swapnil

Bien qu'il existe de nombreux modules installés sur le système. Php utilisera ceux qui sont réellement activés dans la configuration Apache2. De cette façon, vous choisissez celui qui sera utilisé, non pas en l'installant et en le désinstallant, mais en permettant à celui que vous marchez d'être efficace à ce moment-là.

Vous devez activer les modules installés pour pouvoir les utiliser avec Apache2.

Utilisez cette commande:

$ Sudo a2enmod [module-name]

Après avoir activé un module, veillez à redémarrer le serveur Apache2:

$ Sudo service Apache2 restart

Mise à jour:

Il existe un conflit entre les versions de différence des modules bcmath installés. Effectuez ces étapes pour résoudre le problème.

$ Sudo apt install Apache2 libapache2-mod-php
$ cd /etc/Apache2/sites-available/
$ Sudo cp 000-default.conf ospos.conf
$ Sudo a2ensite ospos.conf
$ Sudo nano ospos.conf

Modifier votre nouveau VirtualHost

Changer de:

 & ltVirtualHost *: 80> 
 # La directive ServerName définit le schéma de requête, le nom d'hôte et le port que 
 # le serveur utilise pour s'identifier. Ceci est utilisé lors de la création d'URL de redirection 
 #. Dans le contexte des hôtes virtuels, ServerName 
 # Spécifie le nom d'hôte qui doit apparaître dans l'en-tête Host: de la demande afin que 
 # Corresponde à cet hôte virtuel. Pour l'hôte virtuel par défaut (ce fichier), cette valeur 
 # N'est pas déterminante, car elle est utilisée comme hôte de dernier recours malgré tout. 
 # Cependant, vous devez la définir explicitement pour tout autre hôte virtuel. 
 #ServerName www.example.com 
 
 Webmaster de ServerAdmin @ localhost 
 DocumentRoot /var/www/html[.____._rev
 # Disponible. loglevels: trace8, ..., trace1, débogage, info, avis, avertir, 
 # erreur, crit, alerte, émergent. 
 # Il est également possible de configurer le niveau de journalisation pour 
 # modules, par exemple 
 #LogLevel info ssl: avertir 
 
 ErrorLog $ {Apache_LOG_DIR} /error.log 
 CustomLog $ {Apache_LOG_DIR}/access. journal combiné 
 
 # Pour la plupart des fichiers de configuration de conf-available /, activés ou désactivés par 
 # au niveau mondial, il est possible de 
 # include une ligne pour un seul hôte virtuel particulier. Par exemple, la ligne 
 # Suivante active la configuration CGI pour cet hôte uniquement 
 # Après sa désactivation globale avec "a2disconf". 
 #Include conf-available/serve-cgi -bin.conf 
 </ VirtualHos> 

Changer en:

 & ltVirtualHost *: 80> 
 # La directive ServerName définit le schéma de requête, le nom d'hôte et le port que 
 # le serveur utilise pour s'identifier. Ceci est utilisé lors de la création d'URL de redirection 
 #. Dans le contexte des hôtes virtuels, ServerName 
 # Spécifie le nom d'hôte qui doit apparaître dans l'en-tête Host: de la demande afin que 
 # Corresponde à cet hôte virtuel. Pour l'hôte virtuel par défaut (ce fichier), cette valeur 
 # N'est pas déterminante, car elle est utilisée comme hôte de dernier recours malgré tout. 
 # Cependant, vous devez la définir explicitement pour tout autre hôte virtuel. 
 #ServerName www.example.com 
 
 NomServeur mysite.com
 
 Webmaster de ServerAdmin @ localhost 
 DocumentRoot/var/www/ospos/public
 
 # Niveaux de connexion disponibles: trace8, ..., trace1, débogage, informations, notification, avertir, 
 # Erreur, crit, alerte, émergent. 
 #. Il est également possible de configurer le niveau de consignation pour certains modules 
, Par exemple 
 #LogLevel info ssl: avertir 
 
 ErrorLog $ {Apache_LOG_DIR} /error.log 
 CustomLog $ {Apache_LOG_DIR} /access.log combiné 
 
 # Pour la plupart des fichiers de configuration de conf-available /, lesquels 
 # Sont activés ou désactivés au niveau mondial. , il est possible d'inclure une ligne pour un seul hôte virtuel particulier. Par exemple, la ligne 
 # Suivante active la configuration CGI pour cet hôte uniquement 
 # Après sa désactivation globale avec "a2disconf". 
 #Include conf-available/serve-cgi -bin.conf 
 </ VirtualHost> 

Veuillez noter que le nom mysite.com doit être le nom de l'URL que vous entrez pour afficher votre site. Ajoutez ceci nom du site à votre fichier /etc/hosts avec:

127.0.1.1       mysite.com

Maintenant, arrêtez votre serveur Apache2 avec:

$ Sudo systemctl stop Apache2

Exécutez ceci pour vérifier que rien ne fonctionne sur le port:

$ Sudo lsof -i tcp:80 | egrep LISTEN

Maintenant démarrez le serveur avec:

$ Sudo systemctl restart Apache2

Vous ne devriez pas pouvoir accéder à votre site avec l'URL sitename que vous avez ajoutée à votre fichier ospos.conf.

1
L. D. James