【问题标题】:Cron Script, not able to find file of scripts intentionsCron 脚本,无法找到脚本意图文件
【发布时间】:2017-02-10 19:50:05
【问题描述】:

我有一个 cronjob 正在运行一个 php 脚本,但有一个例外。如果给定文件夹或其任何子文件夹中有任何特定类型的文件,则脚本的任务是获取文件并复制它。

如果我转到我希望 cronjob 在我的浏览器中使用的脚本,该脚本会按预期工作,但是当 cronjob 运行时它不起作用说找不到文件(不是脚本,而是我要复制的文件)

这让我想知道我应该对 cronjob 使用哪种类型的路径?

目前的文件夹结构是 /public_html/cron.php /public_html/sub_folder/sub_folder/FileName.ext

使用file_exists() 在浏览器中使用./sub_folder/sub_folder/FileName.ext 之类的路径对其进行测试会抛出true

通过 cron 运行它会抛出错误。这让我想知道我应该使用哪种类型的路径以及来自服务器的哪个级别?

【问题讨论】:

  • 只需使用从服务器根目录开始的完整文件系统路径,以 / 开头 - 这是最简单的方法。否则,您必须考虑 include_path 配置,当脚本通过 CLI 作为 cron 运行时,这通常会有所不同,因为后者使用不同的 php.ini
  • __DIR__ 在这种情况下真的很有帮助
  • 这是我很长一段时间以来第一次编写任何类型的 cron,没有一个像这个一样复杂,感谢您的帮助,基于 @JazzCat 提出的重复提及,我解决了我的问题通过更改脚本中的目录来解决问题。所以它会从那里向外读取,这样我就可以保持相对路径格式,因为我迟早会把它交给某人,并且让他们需要尽可能少的配置对我有帮助。
  • 请下次添加一段代码以正确了解,我相信您可能在您的脚本中使用了一些 $_SERVER 变量,这些变量在浏览器访问时可用,因为它调用服务器但在您运行 php 脚本时不可用直接使用cli。

标签: php cron


【解决方案1】:

相反

$path = './sub_folder/sub_folder/FileName.ext';

使用

$path =  __DIR__.'/sub_folder/sub_folder/FileName.ext';

【讨论】:

    猜你喜欢
    • 2019-07-28
    • 2022-08-16
    • 2011-08-10
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多