Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:语法错误,意外的T_字符串_Php_Syntax Error - Fatal编程技术网

PHP:语法错误,意外的T_字符串

PHP:语法错误,意外的T_字符串,php,syntax-error,Php,Syntax Error,我得到了这个PHP代码的语法错误 syntax error, unexpected T_STRING 上面写着第2行,这是包含行: <?php    include 'config.inc.php';      // initialization    $photo_upload_fields = '';    $counter = 1;      // If we want more fields, then use, preupload.php?number_of_fi

我得到了这个PHP代码的语法错误

syntax error, unexpected T_STRING
上面写着第2行,这是包含行:

<?php  
  include 'config.inc.php';  
  
  // initialization  
  $photo_upload_fields = '';  
  $counter = 1;  
  
  // If we want more fields, then use, preupload.php?number_of_fields=20  
  $number_of_fields = (isset($_GET['number_of_fields'])) ?  
    (int)($_GET['number_of_fields']) : 5;  
  
  // Firstly Lets build the Category List  
  $result = mysql_query('SELECT category_id,category_name FROM gallery_category');  
  while($row = mysql_fetch_array($result)) {  
    $photo_category_list .= <<<__HTML_END

<option value="$row[0]">$row[1]</option>\n  
__HTML_END;  
  }  
  mysql_free_result( $result );    
  
  // Lets build the Image Uploading fields  
  while($counter <= $number_of_fields) {  
    $photo_upload_fields .= <<<__HTML_END  
<tr><td>  
  Photo {$counter}:  
  <input name="photo_filename[]"  
type="file" />  
</td></tr>  
<tr><td>  
  Caption:  
  <textarea name="photo_caption[]" cols="30"  
    rows="1"></textarea>  
</td></tr>  
__HTML_END;  
    $counter++;  
  }  
  
  // Final Output  
  echo <<<__HTML_END  
<html>  
<head>  
<title>Lets upload Photos</title>  
</head>  
<body>  
<form enctype="multipart/form-data"  
  action="upload.php" method="post"  
  name="upload_form">  
  <table width="90%" border="0"  
    align="center" style="width: 90%;">  
    <tr><td>  
      Select Category  
      <select name="category">  
      $photo_category_list  
      </select>  
    </td></tr>  
    <! - Insert the image fields here -->  
    $photo_upload_fields  
    <tr><td>  
      <input type="submit" name="submit"  
        value="Add Photos" />  
    </td></tr>  
  </table>  
</form>  
</body>  
</html>  
__HTML_END;  
?>

我的include文件如下所示:

<?php  
  $mysql_link = mysql_connect("localhost","user","password");  
  mysql_select_db("db_name") or die("Could not select database");  
  $images_dir = "photos";  
?> 

解决方案:


我在代码中隐藏了不可见的unicode字符,这导致PHP解析器抱怨上述语法错误。

删除前几行并重写它们。有时,如果复制并粘贴代码,它可能会插入unicode不可见字符,PHP无法正确解析这些字符。所以它抛出了这个错误。这种情况在我身上发生过好几次。

在herdoc语法变量的开头和结尾有多个空格;这导致了一些问题。删除后面的空格

<<<__HTML_END
你的代码应该可以正常工作


另请参阅我找到答案的这个线程:

将include用作:
include(“config.inc.php”)用于正确语法。

只需确保已关闭所包含文件中的所有“和”。通常,此错误指向文件中的第一行。

“更多或更少”?错误似乎与包含的文件有关,因此最好了解更多而不是更少。删除(注释掉)插入include行以查看这一行是否触发了错误。您可能有一个不可见的字符(特殊空格或类似字符)在那里。您可以尝试删除有问题的行并重写它。检查您是否忘记在配置文件中的某个位置放置“try(include'config.inc.php');请务必注意,带有结束标识符的行不能包含其他字符。。。这特别意味着标识符不能缩进,分号前后不能有空格或制表符。。。如果这条规则被打破。。。它将不会被视为结束标识符,PHP将继续寻找一个。如果在当前文件结尾之前未找到正确的结束标识符,则在最后一行将导致分析错误。这是个人偏好的问题,而不是“正确的语法”。Include(如require、echo和许多其他)是一种语言构造,而不是函数,因此括号不是必需的,可以省略它们。
__HTML_END;