【问题标题】:PDO MySQL Connection Issue from command line来自命令行的 PDO MySQL 连接问题
【发布时间】:2014-10-31 00:08:40
【问题描述】:

我有一个 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 块的错误是:

开始

致命错误:/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->__construct('mysql:host=loca...', 'root', 'root')#1 {main} 在第 6 行的 /Applications/MAMP/htdocs/issueManager3/notifications.php 中抛出

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

任何帮助表示赞赏。

【问题讨论】:

  • @jeroen 检查上面的编辑
  • @jeroen 使用 127.0.0.1 会出现同样的错误
  • 你知道当你从 CRON 运行东西时你通常需要绝对路径吗?如果需要通过 cron 运行,可以轻松使用 apache 的东西需要绝对路径。确保您的 cron 运行可以找到所需的所有文件。查看所有包含和要求
  • @Hanky웃Panky 使用脚本的绝对路径运行它也不起作用...正如您所见,脚本中没有包含或要求。

标签: php mysql shell pdo terminal


【解决方案1】:

试试这个代码:

   <?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"; ?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    • 2021-10-16
    • 2012-05-10
    • 2019-02-07
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多