从Cron Tab调用时文件中的PHP语法错误

时间:2014-09-17 18:04:11

标签: php cron

被修改

正如我猜测的那样,这是一个php版本问题:

从命令行:

php -v
...
PHP 5.2.17 (cli) (built: Mar  1 2012 16:36:14)
Copyright (c) 1997-2010 The PHP Group
...

网页中的phpinfo:

  

PHP Version 5.4.20

据我所知,我无法更改命令行版本的配置,因为它位于共享服务器(dreamhost,如果它可以帮助某人做出更好的响应)。

我真的需要使用我的php 5.3依赖库,从头开始复制一些进程会花费我很多天的工作,我必须在2周内开发它。

有人知道运行比命令行定义的更高版本的php的技巧吗?

  

我遇到了Cron Job的问题。

     

在我的项目中,几乎每个页面都包含一个包含该文件的文件   以下代码行:

....
    $called_class = get_called_class();
    $this->error_code = 0;
    $this->error_string = "";

    if ( is_array($parametros) || is_object($parametros) ){
        foreach ( $parametros as $key => $value ) {
          if (!$called_class::isValidKey ( $key ) && !$called_class::isExternalKey( $key ) )
              continue;
          $this->$key = $value;   
        }
    }
...
     

从未向我显示任何错误。

     

但是当我设置一个Cron作业来运行包含相同文件的脚本时,   它向我发送了以下信息给我的电子邮件:

     
    

解析错误:语法错误,意外的T_PAAMAYIM_NEKUDOTAYIM     第22行/xxx/xxx/xxx/modelo.php

  
     

这一行是指什么:

if (!$called_class::isValidKey ( $key ) && !$called_class::isExternalKey( $key ) ) 
     

我猜测在命令行中使用的php版本与   一个用于显示页面的服务,或者其他任何内容   调用。

     如果有人能指出我的问题,我会感激,并建议我   解。顺便说一句,我知道我可以使用单独的文件   与cron的早期版本的PHP兼容的说明   工作,但我想避免这样做。

2 个答案:

答案 0 :(得分:1)

问题可能是由于在错误的工作目录中运行脚本引起的,请尝试将crontab命令更改为:

cd path/to/script/directory && php script.php

答案 1 :(得分:1)

好的......似乎很容易让我觉得有点惭愧。

更改了命令:

  

的/ usr / local / bin中/ PHP的

  

的/ usr /本地/ php54 / bin中/ PHP的

这适用于我的dreamhost服务器,但在其他共享服务器中可能类似。 谢谢你的回答。