php скрипт теперь получает ошибки под php 5.3? - PullRequest
0 голосов
/ 01 октября 2011

Я получаю следующий ответ в ssh при попытке запустить этот php-скрипт ... он работал нормально под 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 Ответ

3 голосов
/ 01 октября 2011

Я предполагаю, что вы запускаете его так:

./my_script.php

Попробуйте запустить его так:

php my_script.php

Причина, по которой первая ошибка, состоит в том, что когда выпопробуйте запустить его как исполняемый файл, оболочка сначала проверяет наличие hashbang .Если это так, он запускает его с этим интерпретатором.Если нет (как в вашем случае), он пытается запустить его как исполняемый файл.Это тоже не удается, поэтому он прибегает к попытке выполнить его как сценарий оболочки.

<?php в сценарии оболочки попытается начать чтение из файла с именем ?php и передать его в командучто следует, но нет файла с именем ?php для чтения.Таким образом, это ошибки.

...