PHP 致命错误:require_once(Mail.php):无法打开所需的“Mail.php”

问题描述 投票:0回答:1

我的 PHP 脚本中遇到致命错误,希望得到一些帮助来解决它。这是一个 Cron 作业,每周一生成一份报告并邮寄出去。大约一个月前它工作正常,但现在我在电子邮件中收到此警告和错误。错误信息如下:

警告:require_once(Mail.php):无法打开流:第 2 行 /home/www/healthSolutions/migrations/hs_report.php 中没有此类文件或目录 致命错误:require_once():无法在第 2 行 /home/www/healthSolutions/migrations/hs_report.php 中打开所需的 'Mail.php' (include_path='.:/usr/local/php7/lib/php')

代码片段:

<?php
 require_once "Mail.php";
ini_set('display_errors', 1); //php inif file (error temporary shows)
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

我使用的PHP版本是PHP 7。

php email pear
1个回答
0
投票

如果您需要或在 php 中包含文件,它将在多个位置查找您的文件。

它是您的

include_path
+ 所需文件名的组合。对于您的情况,它将查看:

  • /home/www/healthSolutions/migrations/Mail.php
  • /usr/local/php7/lib/php/Mail.php

它还会查看当前工作目录+所需的文件名。如果是 cronjob,它将是用户的主目录。因此,如果您以 root 身份执行它,php 也会查看:

  • /root/Mail.php

如果在任何这些地方都找不到 Mail.php,您将收到向我们显示的错误。

因为我们不知道 Mail.php 在您的系统中的位置,所以我无法提供任何示例,但要解决此问题,您有两个不错的选择。

我们假设该文件位于:

/home/www/healthSolutions/Mail.php

在你的 CronJob 中,只需先 cd 到 Mail.php 所在的路径:

* * * * * cd /home/www/healthSolutions && php migrations/hs_report.php

或者您使用

hs_report.php
+ 相对路径(最推荐)
 更改 
__DIR__

上的路径
<?php

require_once __DIR__ . "/../Mail.php";
ini_set('display_errors', 1); //php inif file (error temporary shows)
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
© www.soinside.com 2019 - 2024. All rights reserved.