php脚本现在在php 5.3下收到错误?

时间:2011-10-01 04:53:28

标签: php syntax-error token

我在尝试运行这个php脚本时在ssh中得到以下响应...它在php 5.2下工作正常,现在安装了5.3我遇到了麻烦。我看不出有什么问题。

错误:

第1行:?php:没有这样的文件或目录

第2行:意外标记“0”附近的语法错误

第2行:`set_time_limit(0);'

这是脚本。

<?php
set_time_limit(0) ;

$arr = explode("/",$_SERVER['SCRIPT_FILENAME']);
$ct = count($arr);
unset($arr[$ct-1]);
$path=implode("/",$arr);
$path=$path."/";

if(is_file($path."state.txt"))
 {  
    $lines = file($path."state.txt");

    if($lines)
        {
        foreach($lines as $line) 
          {
            if($line)
              {
                 $state = trim($line);
                 if(!is_dir($path.$state)) 
                  {
                    @mkdir($path.$state,0777);
                    if(is_file($path."copieble/state/index.php"))
                       { 
                          $from = $path."copieble/state/index.php";
                          $to = $path.$state."/index.php";
                          @copy($from,$to);
                       }
                  }
              }
          }
        } 
}

 @chdir($path);
           $handle=opendir('.');
               while (($file = readdir($handle))!==false) 
                   {
                     @chdir($path);
                     if (($file != ".") && ($file != ".."))
                         { 
                           if(is_dir($file) && $file != "copieble" && $file !="_vti_cnf")
                               {
                               if(is_file($path.$file.".txt"))
                                 { 
                                 $lines = file($path.$file.".txt");
                                       if($lines)
                                            {
                                            foreach($lines as $line) 
                                              {
                                                if($line)
                                                  {
                                                     $city = trim($line);
                                                     @chdir($path.$file);
                                                     if(!is_dir($city)) 
                                                        {

                                                            @mkdir($city,0777);
                                                        if(is_file($path."copieble/city/index.php"))
                                                           { 
                                                             $from = $path."copieble/city/index.php";
                                                             $to = $path.$file."/".$city."/index.php";
                                                             @copy($from,$to);

                                                           } 
                                                    }

                                                  }
                                              }
                                            } 
                                 }

                              }

                        }
                  }
                 closedir($handle); 
include("reflect_changes.php");
?>

1 个答案:

答案 0 :(得分:3)

我猜你正在运行它:

./my_script.php

尝试像这样运行:

php my_script.php

第一个错误的原因是,当您尝试像可执行文件一样运行它时,shell首先会查看是否存在hashbang。如果是这样,它会使用该解释器运行它。如果不是(就像你的情况一样),它会尝试将其作为可执行文件运行。那也失败了,所以它试图将它作为shell脚本执行。

shell脚本中的

<?php会尝试从名为?php的文件开始读取并将其传递到后面的命令中,但是没有名为?php的文件可供读取。因此,它错了。