当前位置:  开发笔记 > 编程语言 > 正文

PDO连接是从命令行工作,但不是通过Apache?

如何解决《PDO连接是从命令行工作,但不是通过Apache?》经验,为你挑选了1个好方法。

我有一个非常简单的测试脚本:

query($SQL) as $row){

    print $row['phrase']."\n";

}

?>

当我从命令行执行此脚本时,它完美地工作:

$ php test.php
corporal punishment
Stretches
voluntary agencies and the resettlement of refugees
music and learning
Nike Tiger Woods Scandal
Hermeneia
PSYCHINFO
anthony bourdain
Black-White Couples and their Social Worlds
colonization, hodge

但是当我通过我的网络浏览器访问完全相同的脚本时,它说:

Could not connect to database, rawr. :-(

我已经尝试var_dump了错误,消息是:"SQLSTATE [HY000] [2003]无法连接到'db.example.edu'(13)上的MySQL服务器".

这令人费解.它是完全相同的服务器上的相同脚本 - 为什么它在我从命令行执行它时会起作用,但是当Apache执行它时会失败?



1> Michael Berk..:

如果这是运行SELinux的Red Hat派生版本(RHEL,CentOS,Fedora,ScientificLinux)(或使用SELinux的任何非Red Hat衍生版本),则编写本文时的默认策略设置是禁止Apache与其他人建立外部连接.服务器或数据库.作为root,您必须启用以下两个SELinux布尔值.使用该-P选项可以在重新启动时保留更改.

setsebool -P httpd_can_network_connect=1
setsebool -P httpd_can_network_connect_db=1

请注意,httpd_can_network_connect可能没有必要.首先尝试打开它httpd_can_network_connect_db.


谢谢!在我的情况下,`httpd_can_network_connect`行不是必需的,只是`httpd_can_network_connect_db`行.
推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有