运行 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 解释器也是如此。