我在尝试运行这个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");
?>
答案 0 :(得分:3)
我猜你正在运行它:
./my_script.php
尝试像这样运行:
php my_script.php
第一个错误的原因是,当您尝试像可执行文件一样运行它时,shell首先会查看是否存在hashbang。如果是这样,它会使用该解释器运行它。如果不是(就像你的情况一样),它会尝试将其作为可执行文件运行。那也失败了,所以它试图将它作为shell脚本执行。
shell脚本中的 <?php
会尝试从名为?php
的文件开始读取并将其传递到后面的命令中,但是没有名为?php
的文件可供读取。因此,它错了。