PDO Sphinx连接用户权限(SELINUX问题)

时间:2014-03-20 15:25:24

标签: php mysql apache pdo sphinx

我的问题很可能是用户权利问题。

我有一个php脚本,使用PDO连接到sphinx db。

$sp = new PDO('mysql:host=127.0.0.1;port=9306;dname=', '', '');

当我使用root帐户从终端运行它时,它可以正常工作。但, 当我尝试通过浏览器以用户apache运行它时,我收到以下错误:

[Thu Mar 20 11:22:51 2014] [error] [client 98.12.26.274] PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (13)' in /var/www/html/surveys/test.php:3\nStack trace:\n#0 /var/www/html/surveys/test.php(3): PDO->__construct('mysql:host=127....', '', '')\n#1 {main}\n  thrown in /var/www/html/surveys/test.php on line 3

必须有一些东西缺少propoer用户权限,但我不知道我需要哪些文件才能为此工作提供权利。

更新: 我意识到selinux阻止了端口。如何使用selinux为apache启用该端口?

1 个答案:

答案 0 :(得分:1)

只使用套接字而不是IP地址? See the manual for an example。这完全绕开了网络堆栈。

添加类似

的内容
listen=/tmp/mysql_sphinx.sock

进入sphinx.cnf并将相同的套接字放入PDO的DNS中,如

$db = new PDO('mysql:dbname=testdb;unix_socket=/tmp/mysql_sphinx.sock');

这使您无需通过网络访问MySQL。考虑到安全性,这样做会更好。