【问题标题】:how to correctly include a file in php for cronjobs and for normal execution如何在 php 中正确包含用于 cronjobs 和正常执行的文件
【发布时间】:2014-10-22 00:28:06
【问题描述】:

所以我有一个脚本可以更新我的网上商店的所有货币汇率。 我正在尝试使用 cronjob 运行它,但是当它通过 cronjob 执行时出现此错误:

PHP Warning:  require(.../.../core/dbcon.php): failed to open stream: No such file or directory in /var/www/domain.com/wholesale/system/labs/cur.php on line 2
PHP Fatal error:  require(): Failed opening required '.../.../core/dbcon.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/domain.com/wholesale/system/labs/cur.php on line 2

我也尝试过使用完整链接来包含它,但是在手动运行它时似乎不起作用,并且在 cronjobs 中也不起作用。

在 php 文件本身中,这是我用来包含它的:

require(".../.../core/dbcon.php");

当我手动运行它时,它会正确返回所有货币,并在数据库中更新它们。

我如何正确地要求该文件,以便它可以使用 cronjob 和手动执行。

【问题讨论】:

  • 您遇到什么错误?您尝试包含的文件的路径没有多大帮助。此外,您如何运行脚本也无关紧要。手动和从 cron 应该都是一样的。
  • 我已经用更多信息编辑了这个问题。
  • 你试过像require(__DIR__ . "/../../core/dbcon.php");一样使用__DIR__吗?

标签: php cron require


【解决方案1】:

试试require("./../../core/dbcon.php"); 或使用绝对路径。

更新

答案已更新 - 请参阅下面的 cmets 了解更多信息。

【讨论】:

  • 如前所述,我已经尝试使用绝对路径,使用 ../../ 而不是 .../.../ 会得到完全相同的结果。
  • @KristoferAronSverrisson 是 /var/www/domain.com/wholesale/core 中的 dbcon.php 吗?
  • @KristoferAronSverrisson 你试过这样吗? ./../../core/dbcon.php 我也猜文件名都是小写的,包括文件扩展名(曾经给我带来麻烦)。
  • 或者如果没有帮助,我建议打印当前工作目录,因为相对路径是相对于 CWD 的。更多信息:php.net/manual/en/function.getcwd.php
  • 使用你最后的评论我想通了。我不知道你可以包含这样的文件。我猜你每天都会学到一些新东西,嗯?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-20
  • 2020-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多