【发布时间】: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