2014-09-06 83 views
4

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

继承人的脚本:

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

致命错误:带有消息'SQLSTATE [HY000] [2002]未在/ Applications/MAMP/htdocs/issueManager3/notifi中未捕获异常'异常' cations.php:11 堆栈跟踪:#{0}主要在 抛出/Applications/MAMP/htdocs/issueManager3/notifications.php第11行

我得到没有try catch块的错误是: START 致命错误:在/Applications/MAMP/htdocs/issueManager3/notifications.php:6 堆栈跟踪:#0 /应用程序/ MAMP /消息中未发现异常'PDOException',消息为'SQLSTATE [HY000] [2002]无此文件或目录' htdocs/issueManager3/notifications.php(6):PDO - > __ construct('mysql:host = loca ...','root','root')#1 {main} /Applications/MAMP/htdocs/issueManager3/notifications.php on line 6

这是说没有这样的文件或目录,但它回应出“开始”,所以它绝对不是无法找到脚本的情况。当我正在从终端执行脚本时,我是否需要添加连接到数据库?

任何帮助表示赞赏。

+0

@jeroen检查上述 – user3763741 2014-09-06 01:52:15

+0

编辑@jeroen使用127.0.0.1给出了同样的错误 – user3763741 2014-09-06 01:59:48

+0

你知道,当你由cron的东西,你一般需要绝对路径?如果需要通过cron运行,那么可以轻松使用apache的东西需要绝对路径。确保你的cron运行可以找到所有需要的文件。查看所有包含内容并要求 – 2014-09-06 02:26:09

回答

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