无法从命令行使用Mail.php

无法从命令行使用Mail.php,php,email,ubuntu,cron,smtp,Php,Email,Ubuntu,Cron,Smtp,我有一个php脚本,这将是一个cron工作,它一直工作良好,直到我添加了我一直使用的电子邮件脚本 我以前在整个站点上都使用过电子邮件脚本,但是当我尝试从命令行使用它运行cron作业时,它失败了 邮件脚本如下所示 <?php require_once "Mail.php"; function sendMail($to, $from, $subject, $message) { $no_errors = true; $host = "ssl://

我有一个php脚本,这将是一个cron工作,它一直工作良好,直到我添加了我一直使用的电子邮件脚本

我以前在整个站点上都使用过电子邮件脚本,但是当我尝试从命令行使用它运行cron作业时,它失败了

邮件脚本如下所示

    <?php

require_once "Mail.php";

function sendMail($to, $from, $subject, $message) {

        $no_errors = true;

        $host = "ssl://smtp.server.com";
        $port = "465";
        $username1 = "username";
        $password = "password";

        $headers = array ('From' => 'myfromemail@myemail.com',
          'To' => $to,
          'Subject' => $subject);
        $smtp = Mail::factory('smtp',
          array ('host' => $host,
            'port' => $port,
            'auth' => true,
            'username' => $username1,
            'password' => $password));

        $mail = $smtp->send($to, $headers, $message);

        if (PEAR::isError($mail)) {

            $no_errors = false;

            echo $mail->getMessage();

        } else {

            $no_errors = true;

         }

        return $no_errors;

        }

?>

如果我将include send_mail.php注释掉,它可以正常工作,但不会发送电子邮件

有什么想法吗?

从命令行尝试“locate Mail.php”,然后在require\u中尝试此脚本的完整路径一次

当响应通过cron运行时,还要尝试将其转储到日志文件中:

从命令行尝试“locate Mail.php”,然后在require\u中尝试此脚本的完整路径一次

当响应通过cron运行时,还要尝试将其转储到日志文件中:


您需要确保,当脚本从
cron
运行时,它设置了正确的工作文件夹,以便可以加载
mail.php
。使用和函数是您需要使用的两个


通常,当从web浏览器(在Apache服务器上)运行时,工作目录是
/var/www
,但从
cron
,它通常是文件系统的根,
/
您需要确保,当脚本从
cron
运行时,它设置了正确的工作文件夹,因此它可以加载
mail.php
。使用和函数是您需要使用的两个


通常,当从web浏览器(在Apache服务器上)运行时,工作目录是
/var/www
,但从
cron
,它通常是文件系统的根目录,
/

当包含外部文件时,您需要知道文件在哪里,然后PHP将在哪里查找它。您可以检查它的外观并设置它。设置新目录时,需要添加(而不是替换)安装Mail.php的目录。使用
get\u include\u path()。路径分隔符$yourPath
作为新值。

当包含外部文件时,需要知道文件在哪里,然后PHP将在哪里查找它。您可以检查它的外观并设置它。设置新目录时,需要添加(而不是替换)安装Mail.php的目录。使用
get\u include\u path()。路径分隔符$yourPath
作为新值。

运行cron时的标准文件夹可能与包含此include的文件夹不同。试试这个:

require_once realpath( dirname( __FILE__ ) . '/Mail.php' );

在一般情况下,您可以根据需要添加
或文件夹结构,并且它仍然可以工作。

运行cron时的标准文件夹可能与包含此include的文件夹不同。试试这个:

require_once realpath( dirname( __FILE__ ) . '/Mail.php' );

在一般情况下,您可以根据需要添加
或文件夹结构,它应该仍然可以工作。

尝试查找,但没有返回任何内容。php是从pear发来的,所以我不知道为什么会找到它,什么也没有回来。php来自pear,所以我不知道为什么