![Memcached 无法在 PHP 文件中运行,但在 SSH 中运行 - CentOS](https://linux22.com/image/748231/Memcached%20%E6%97%A0%E6%B3%95%E5%9C%A8%20PHP%20%E6%96%87%E4%BB%B6%E4%B8%AD%E8%BF%90%E8%A1%8C%EF%BC%8C%E4%BD%86%E5%9C%A8%20SSH%20%E4%B8%AD%E8%BF%90%E8%A1%8C%20-%20CentOS.png)
在我的 CentOS 7 上,Memcached 正在运行并在 SSH 上工作,但在 PHP 文件中不起作用。我遵循了这篇文章:https://www.mynotepaper.com/install-memcached-on-centos-7。此方法在我之前的服务器上运行良好。
我已经使用 telnet 测试了 Memcached。它运行良好。
$ telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set test 0 100 5
Hello
STORED
get test
VALUE test 0 5
Hello
END
使用 telnet 存储数据后,我通过 PHP 命令在 SSH 上进行了测试。它也能正常工作:
php -r '$c = new Memcached(); $c->addServer("127.0.0.1", 11211); var_dump( $c->getAllKeys() );'
array(1) {
[0]=>
string(4) "test"
}
但在 PHP 文件中,它不起作用。PHP 代码:
<?php
$c = new Memcached();
$c->addServer("127.0.0.1", 11211);
var_dump( $c->getAllKeys() );
?>
它总是显示bool(false)
。这是我的PHP 信息的屏幕截图。
你能告诉我我的错误是什么吗?
答案1
为了允许 httpd 集成的 PHP 模块在强制 SELinux 环境中进行网络访问(即使是环回网络),您必须在服务器上执行以下操作(以 root 身份或使用 sudo):
setsebool -P httpd_can_network_connect on
Centos Wiki 上的布尔值和信息列表: https://wiki.centos.org/TipsAndTricks/SelinuxBooleans