Windows php 第一行错误 <?

Windows php error on first line with <?

我有一个 php 脚本,它以以下行开头

<?xml version="1.0" encoding="UTF-8"?>

它在 LAMP 世界中运行良好,但是当我将它移植到 Windows 时,我认为它认为这一行是代码,但实际上它不是,因为我在 Visual Studio 中遇到此错误:

Syntax error: unexpected token 'version'

有没有办法让我 Windows php 不认为这是代码?我以为所有代码块都必须以 <?php?

开头

您只需使用 PHP 的 header 功能即可为您呈现此标签。将其放在代码的第一行:

<? header("Content-type: text/xml; charset=utf-8") ?> 

那么您的 PHP 标签就不会有问题了。

您可以只输出 PHP 的 XML 声明:

<?php
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";

// ...

这将有完全相同的输出,解释器不会混淆这实际上是一个 PHP 文件。

这还有一个不太明显的优势。使用前几个字节而不是使用文件扩展名来分析文件内容的程序会认为以 <?xml 开头的文件是 XML 文件,因此会报告无效的内容类型。
例如,file 命令,对于您的示例,打印:

foo.php: XML document text

使用我的解决方案时:

foo.php: PHP script, ASCII text

另见 PHP opening tags and XML declaration,其中 OP 报告了一个类似的问题,导致 PHPStorm 被前 <? 个字符混淆,认为它是 PHP 代码。