No suelo hablar de temas tan técnicos aquí, pero creo que es interesante dejar este apunte para aquellos a los que les pueda resultar interesante, ya que he tenido que buscar bastante por foros para llegar a la solución a este error.
En mis ratos libres estoy dando mis primeros pasos con Zend Framework, un framework de código abierto para desarrollar aplicaciones y servicios web con PHP 5. Estoy llevando a cabo pruebas en un hosting compartido Linux en Go Daddy.
El mensaje de error que me aparecía de forma continua al tratar de ejecutar zf.sh, la herramienta de línea de comandos, era el siguiente (en vuestro mensaje variará la ruta donde se encuentra zf.php):
<br />
<b>Parse error</b>: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ in <b>/home/content/x/a/m/user/html/zf/ZendFramework-1.11.11/bin/zf.php</b> on line <b>38</b><br />
La versión de PHP era la correcta (superior a la 5.2.4), comprobada mediante un script php que ejecuta la función phpinfo(), así como ejecutando en línea de comandos “php -v”. La versión instalada era la 5.2.14.
Además, mediante un sencillo código que utiliza las librerías Zend Framework, comprobaba que las librerías de Zend están incluídas en las rutas del php5.ini, mediante la línea
include_path = “/home/content/x/a/m/user/html/zf/ZendFramework-1.11.11/library”
El código que realiza la comprobación es el siguiente
<?
require_once ‘Zend/Mail.php’;
$mail=new Zend_Mail();
echo ‘it is working’;
?>
La solución a este problema es muy sencilla, y llegué a ella a través de este blog. Es tan sencilla como editar el archivo zf.sh e incluir después del código
if test “@php_bin@” != ‘@’php_bin’@’; then
PHP_BIN=”@php_bin@”
elif command -v php 1>/dev/null 2>/dev/null; then
PHP_BIN=`command -v php`
else
PHP_BIN=php
fi
La línea
PHP_BIN=/usr/local/php5/bin/php
que indica donde se encuentra el ejecutable (no el directorio) de php5. Esta ruta, así como el nombre del ejecutable, pueden variar dependiendo de la instalación de Linux o del proveedor de hosting (ISP) utilizado. En mi caso es un hosting compartido Linux de Go Daddy.