“php -f” 不运行代码,只显示文件内容

“php -f” 不运行代码,只显示文件内容

运行 Debian 9 和 PHP 7.3,尝试使用命令执行文件php -f hello.php。它不会回显,而是hello输出源代码。完整代码如下

#!/usr/bin/php
<?
echo 'hello';
?>

我做了什么:

  • 确认该文件具有读取和执行权限。
  • 确认 PHP舍邦线是正确的。
  • 确认 PHP CLI 工具已安装。

哪里出了问题?如何修复?

答案1

当 PHP 解析文件时,它会查找开始和结束标记,这些标记是 和 ,<?php它们?>告诉 PHP 开始和停止解释它们之间的代码。以这种方式解析允许 PHP 嵌入各种不同的文档中,因为 PHP 解析器会忽略一对开始和结束标记之外的所有内容。

PHP 还允许使用短打开标签<?(不鼓励这样做,因为只有在使用short_open_tag php.ini配置文件指令启用或使用选项配置 PHP 时才可用--enable-short-tags)。

来源

因此,最可靠的解决方案是在代码中使用<?php而不是。<?

答案2

那个“shebang”是不需要的:

#!/usr/bin/php

只需编写这样的脚本即可;请注意,您应该将其添加php到开头的短标签(<?):

<?php
echo 'hello';
?>

然后像这样运行它:

php -f hello.php

或者甚至直接省略-f并像这样运行:

php ./hello.php

然后输出将是这样的:

hello

此外,当你这样说时:

  • 确认该文件具有读取和执行权限。

PHP 文件不必具有执行权限;只需具有读取权限,因为该文件将由 PHP 解释器读取和解析。命令行和 Apache 模块 PHP 解释器也是如此。

相关内容