!["php -f" no ejecuta código pero solo muestra el contenido del archivo](https://rvso.com/image/1592548/%22php%20-f%22%20no%20ejecuta%20c%C3%B3digo%20pero%20solo%20muestra%20el%20contenido%20del%20archivo.png)
Ejecutando Debian 9 y PHP 7.3, intentando ejecutar un archivo con el php -f hello.php
comando. En lugar de hacer eco hello
, genera el código fuente. El código completo es
#!/usr/bin/php
<?
echo 'hello';
?>
Lo que hice:
- Confirmado que el archivo tiene permisos de lectura y ejecución.
- Confirmado el PHPel asuntoLa línea es correcta.
- Confirmado que las herramientas PHP CLI están instaladas.
¿Lo que está mal? ¿Cómo hacer que funcione?
Respuesta1
Cuando PHP analiza un archivo, busca etiquetas de apertura y cierre, que son
<?php
y?>
que le indican a PHP que comience y deje de interpretar el código entre ellas. El análisis de esta manera permite que PHP se incruste en todo tipo de documentos diferentes, ya que el analizador PHP ignora todo lo que está fuera de un par de etiquetas de apertura y cierre.PHP también permite etiquetas abiertas cortas
<?
(lo cual no se recomienda ya que solo está disponible si se habilita mediante lashort_open_tag
php.ini
directiva del archivo de configuración, o si PHP se configuró con la--enable-short-tags
opción).
(fuente)
Entonces, la solución más confiable es usar <?php
en lugar de <?
en su código.
Respuesta2
Ese “shebang” no es necesario:
#!/usr/bin/php
Simplemente haz tu guión así; tenga en cuenta que debe agregar el php
a la etiqueta corta de apertura ( <?
):
<?php
echo 'hello';
?>
Luego ejecútelo así:
php -f hello.php
O simplemente omita el -f
y ejecútelo así:
php ./hello.php
Y entonces el resultado sería este:
hello
Además, cuando dices esto:
- Confirmado que el archivo tiene permisos de lectura y ejecución.
Los archivos PHP no necesitan tener permisos de ejecución; solo permisos de lectura ya que el intérprete PHP leerá y analizará el archivo. Lo mismo ocurre con la línea de comandos y con el intérprete PHP del módulo Apache.