Mac OS上的PHP7.2 memcached扩展
我正在尝试在mac OS High Sierra上设置php memcached扩展。我正在运行PHP7.2 php-v的输出: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
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。