代码之家  ›  专栏  ›  技术社区  ›  Devner

php:尝试通过cron作业运行脚本时出错

  •  1
  • Devner  · 技术社区  · 14 年前

    我通过控制面板设置了一个cron作业。我已经通过我的ftp上传了脚本,将其权限设置为777(这样做安全吗?)&给出了作业中此脚本的路径(amp;G)。现在,脚本使用依赖脚本来运行作业。迷惑?就像这样:

    克朗

    <?php require("some_file1.php");
    require("file1.php");
    require("folder1/file1.php");
    require("folder1/file2.php");
    require("folder2/file1.php");
    
    //This value is actually received from one of the require files above after come calculations
    $get_content = 'This is some value received after calculations.';
    
    mail('Hi', 'email@mydomain.com', $get_content, 'Error');
    ?>
    

    我已选择在我的电子邮件中接收cron作业的确认信息,这是我收到的错误:

    mydomain.com/cron.php: line 1: syntax error near unexpected token `('
    mydomain.com/cron.php: line 1: `<?php require("some_file1.php");
    '
    

    我试着与技术支持人员交谈,但他们对这个技术细节一无所知,目前还没有技术人员。如果有人能在这里帮我,那就太好了。

    期待您的回复。

    谢谢您。

    5 回复  |  直到 13 年前
        1
  •  7
  •   Mikhail Chernykh    14 年前

    我认为,它们有不同的mod_php和命令行php配置文件。 另一件要检查的事情-尝试将解释器字符串添加到PHP文件的顶部:

    例如:

     #!/usr/local/sbin/php
    
        2
  •  1
  •   BojanG    14 年前

    尝试 curl http://youdomain.com/path/script.php .

    虽然通常不建议使用 cURL Wget . 这样可以避免捕捉php cli二进制文件和include路径。

        3
  •  0
  •   GWW    14 年前

    您可以使用以下方法包括脚本:

    $path = dirname(__FILE__);
    require($path."/"."file1.php"); 
    ...
    

    这应该解决相对路径问题。

        4
  •  0
  •   MrWhite    14 年前

    如果使用cron(或至少正确的相对路径*),则需要在脚本中使用绝对路径。当从命令行(如cron)运行脚本时,CWD是不同的。虽然如果您没有提供任何路径,那么它应该使用include_路径设置为的任何路径。

    *可以使用chdir()更改cwd。

    另外,尝试移除支架。

    require "some_file1.php";  // brackets are not reqd - it's a language construct
    
        5
  •  0
  •   Devner    14 年前

    我可以通过网站上的技术支持来解决这个问题。这是解决方案,以防有人想知道。以下是需要通过网站的控制面板(GUI)添加的“运行命令”。

    /usr/local/php5/bin/php 
    
    /home/username/mydomain.com/cron.php
    

    cron.php文件保持不变。

    我想我必须接受我自己的答案,因为这是最相关的答案,包含了完美的解决方案。我仍然感谢你们的帮助,感谢所有的回答。