Mac OS上的PHP7.2 memcached扩展

Mac OS上的PHP7.2 memcached扩展,php,symfony,memcached,macos-sierra,Php,Symfony,Memcached,Macos Sierra,我正在尝试在mac OS High Sierra上设置php memcached扩展。我正在运行PHP7.2 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, C

我正在尝试在mac OS High Sierra上设置php memcached扩展。我正在运行PHP7.2

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
我通过pecl安装,没有任何错误:

pecl install memcached
它在php.ini文件中启用:

extension="memcached.so"

当我在Apache服务器上运行
时。我可以看到已配置的会话:

session.save_handler    memcached   memcached
我的symfony应用程序仍然会出现以下错误:

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

我的apache运行的是不同版本的php(php版本7.1.16),我不知道为什么,但我认为这不会是一个问题

在info文件中,我可以在核心部分看到php扩展目录是
“/usr/local/lib/php/pecl/20170718”
。当我打开那个目录时,有一个
memcached.so
文件。这条路是正确的

编辑2:

在我的apache日志中,我看到警告:

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

所以。Apache和SLI php版本使用不同的php.ini文件。 例如,在我的Debian 9上,它使用/etc/php/7.2/apache2/php.ini和/etc/php/7.2/cli/php.ini

我相信您的问题在于您使用的是不同版本的PHP

请尝试下面的命令:

$sudo a2dismod php7.1
$sudo a2enmod php7.2
$sudo service apache2 restart
如果仍然出现相同的错误,请尝试在www root dir thich content中创建info.php下一个代码:

<?php
phpinfo();

“在我的Apache服务器上。我可以看到memcached已启用”是错误的。您看到的是将会话保存处理程序设置为memcached。您应该在phpinfo输出中看到一个单独的memcached块,即带有紫色和灰色的单独表格。检查Aapache mod正在使用的ini文件,它也在那里。在这种情况下,我看不到它,但在运行此命令时可以看到memcached扩展名
php-m | grep memcached
是否验证了phpinfo正在使用的ini文件是您正在编辑的文件?你确定php-m列出的是“memcached”而不是“memcache”吗?是的。我的apache在
/etc/php.ini
中使用了不同的
php.ini
文件,但是它在那里也被启用了,是的,它是memcached而不是memcache。当然,php没有加载那些启用了模块的ini文件,因为从那时起,您会在phpinfo输出中看到memcached块。从“已加载的配置文件”和“已解析的其他.ini文件”中的值可以清楚地看出哪些文件已加载。谢谢,但这些命令在MacOS上不存在。我得到了
sudo:a2dismod:command未找到
所以,好吧!您可以创建info.php哪个content“您使用brew安装apache和php吗?我已经安装了。我的php.ini位于
/etc/php.ini
。在该文件中,我添加了
extension=“memcached.so”
并重新启动了apache。但它不起作用。当我运行Symfony内置服务器时(在php7.2上)一切正常,memcached已加载。Apache已预安装。我通过brew升级了php。