Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 命令行中的PDO MySQL连接问题_Php_Mysql_Shell_Pdo_Terminal - Fatal编程技术网

Php 命令行中的PDO MySQL连接问题

Php 命令行中的PDO MySQL连接问题,php,mysql,shell,pdo,terminal,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_EXCEP

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

开始

致命错误:未捕获异常“exception”,在/Applications/MAMP/htdocs/issueManager3/notifications.php:11中显示消息“SQLSTATE[HY000][2002]无此类文件或目录” 堆栈跟踪:#0{main} 在第11行的/Applications/MAMP/htdocs/issueManager3/notifications.php中抛出

在没有try-catch块的情况下得到的错误是: 开始 致命错误:未捕获异常“PDOException”,在/Applications/MAMP/htdocs/issueManager3/notifications.php:6中显示消息“SQLSTATE[HY000][2002]无此类文件或目录” 堆栈跟踪:#0/Applications/MAMP/htdocs/issueManager3/notifications.php(6):PDO->u构造('mysql:host=loca…','root','root')#1{main} 在第6行的/Applications/MAMP/htdocs/issueManager3/notifications.php中抛出

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

谢谢你的帮助

请尝试以下代码:

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


@jeroen检查编辑above@jeroen使用127.0.0.1会产生相同的错误您是否知道,当您从CRON运行时,通常需要绝对路径?如果需要通过cron运行,那么可以轻松使用apache的东西需要绝对路径。确保您的cron运行可以找到所需的所有文件。查看所有包含和requires@Hanky웃Panky用脚本的绝对路径运行它也不起作用。。。正如你所看到的,脚本中没有包含或要求。你经历过这个吗?这个呢?