PDO MySQL连接问题来自命令行

时间:2014-09-06 01:40:01

标签: php mysql shell pdo terminal

我有一个PHP脚本,我想在后台运行MacOs终端。我无法连接到数据库,但是当从浏览器运行时,完全相同的脚本没有问题。

继承剧本:

<?php

echo "START";

try { 
    $con = new PDO("mysql:host=localhost;dbname=issues;charset=utf8", "root", "root"); 
    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $con->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} 
catch(PDOException $e) { 
    throw new Exception($e->getMessage());
}

echo "here"; ?>

我正在使用php script.php

从终端运行它

我得到的try catch块的错误是:

START

致命错误:在/Applications/MAMP/htdocs/issueManager3/notifications.php:11中,消息“SQLSTATE [HY000] [2002]没有这样的文件或目录”的未捕获异常“异常” 堆栈跟踪:#0 {main}   在第11行的/Applications/MAMP/htdocs/issueManager3/notifications.php中引发

没有try catch块我得到的错误是: 开始 致命错误:/Applications/MAMP/htdocs/issueManager3/notifications.php:6中未捕获的异常'PDOException',消息'SQLSTATE [HY000] [2002]没有这样的文件或目录' 堆栈跟踪:#0 /Applications/MAMP/htdocs/issueManager3/notifications.php(6):PDO-&gt; __ construct('mysql:host = loca ...','root','root')#1 {main }   在第6行的/Applications/MAMP/htdocs/issueManager3/notifications.php中抛出

它说没有这样的文件或目录,但是它正在回显“START”,所以它肯定不是无法找到脚本的情况。在从终端执行脚本时,我是否遗漏了在连接数据库时需要添加的内容?

任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

试试这段代码:

   <?php

    echo "START";

    try { 
        $con = new PDO("mysql:host=127.0.0.1;dbname=issues;charset=utf8", "root", "root"); 
        $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
        $con->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    } 
    catch(PDOException $e) 
{ 
       echo $e->getMessage();
    }

    echo "here"; ?>