我遇到以前工作脚本的问题,我不明白发生了什么。
为了简单起见我有一个html仪表板。这个仪表板像这样调用php脚本
var jsonData = $.ajax({
url: "script/pgResumeData.php",
dataType:"json",
async: false
}).responseText;
在我迁移机器之前,它工作得很好。我快照我的卷然后重新启动另一台机器,一切正常,除了php的pg_connect无法正常工作!
$dbconn = pg_connect("host=127.0.0.1 dbname=test user=user password=pass") or die('Could not connect: ' . pg_last_error());
但是,如果我从shell“php /.../pgResumeData.php”运行我的PHP脚本,它就会完美地检索数据。
如果我打印pg_last_error($ dbconn),pg_connect也会在控制台中返回“Query failed:”。所以似乎我无法得到完整的错误......
有什么想法吗?
编辑:如果我使用浏览器访问PHP脚本,但是使用shell工作,则会出现相同的错误。
答案 0 :(得分:1)
当你说
时But if I run my PHP script from the shell "php /.../pgResumeData.php", it's retrieving datas perfectly
你的意思是你的新机器吗?
我不知道postgre是否像MySQL那样工作但是套接字可能有些错误,所以它会工作,因为shell知道套接字在哪里但不是php?
尝试输出phpinfo()&& php.ini查看套接字是否在正确的位置。
编辑:也许你会问自己,为什么地狱套接字会出现问题,因为我输入了127.0.0.1,我的MySQL安装问题与我无法连接localhost / 127.0.0.1但COULD相同连接shell没有任何问题,不得不使用机器的真正IP连接,这只是一个套接字问题。对不起,如果我错了:p编辑n°2:似乎我的答案不对,因为你使用了php ./yourpath.php它应该是完全相同的输出,就好像它是在你的浏览器中运行一样:/所以......不知道:'(
答案 1 :(得分:0)
调试代码:
var jsonData = $.ajax({
url: "script/pgResumeData.php",
dataType:"json",
async: false,
success:function(data) {
console.log(data) // see the console to see the result
}
}).responseText;
答案 2 :(得分:0)
我发现了问题。它实际上是以下
的副本Can't Connect to PostgreSQL with PHP pg_connect()
要修复它,只需执行
sudo setenforce 0
这就是为什么它实际上是在shell上工作而不是从apache