web-dev-qa-db-fra.com

PHP 7.2 extension memcached sur Mac OS

J'essaye d'installer l'extension de php memcached sur mac OS High Sierra. Je cours php 7.2

Sortie de php -v:

PHP 7.2.6 (cli) (built: May 25 2018 06:18:43) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.6, Copyright (c) 1999-2018, by Zend Technologies

J'ai installé memcached via pecl sans erreur:

pecl install memcached

Il est activé dans le fichier php.ini:

extension="memcached.so"

Lorsque j'exécute <?php echo phpinfo();?> sur mon serveur Apache. Je peux voir la session configurée:

session.save_handler    memcached   memcached

Mon application symfony me donne toujours cette erreur:

(1/1) ClassNotFoundException
Attempted to load class "Memcached" from the global namespace.
Did you forget a "use" statement?

MODIFIER:

Mon Apache exécute une version différente de php (PHP Version 7.1.16). Je ne sais pas pourquoi mais je pense que cela ne peut pas être un problème. 

Dans le fichier d'information, je peux voir dans la section CORE que l'extension de répertoire php est "/usr/local/lib/php/pecl/20170718". Lorsque j'ouvre ce répertoire, il y a un fichier memcached.so. Le chemin est correct. 

EDIT 2:

Je vois dans mes journaux Apache un avertissement:

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/pecl/20170718/memcached.so' - dlopen(/usr/local/lib/php/pecl/20170718/memcached.so, 9): Symbol not found: _zend_empty_string\n  Referenced from: /usr/local/lib/php/pecl/20170718/memcached.so\n  Expected in: flat namespace\n in /usr/local/lib/php/pecl/20170718/memcached.so in Unknown on line 0
5
Joozty

Alors. Apache et SLI version php utilisent différents fichiers php.ini. Par exemple, utilisez Debian 9 avec /etc/php/7.2/Apache2/php.ini et /etc/php/7.2/cli/php.ini.

Je pense que votre problème est que vous utilisez une version différente de PHP.

Essayez juste les commandes ci-dessous:

$Sudo a2dismod php7.1
$Sudo a2enmod php7.2
$Sudo service Apache2 restart

Si vous obtenez toujours la même erreur, essayez de créer info.php dans votre répertoire racine www.

<?php
phpinfo();

Et vérifiez que Memcache est chargé.

1
Lakremon