Quiero que los scripts PHP se ejecuten tanto en la línea de comandos como en el sitio web (uso Apache y Nginx) así que puse #!/Usr/bin/php en la primera línea de mis scripts pero eso aparece en el sitio web ...¿Cómo puedo evitar mostrar "#!/Usr/bin/php" en PHP?
Respuesta
llamada la secuencia de comandos con el comando php
¿Cómo se puede hacer? ¿Te refieres a Nginx? Uso php-fpm en debian – brainsqueezer
Es cierto que puede ejecutar el script usando el comando 'php'. Sin embargo, si desea crear un script ejecutable ('chmod + x yourscript.php'), debe agregar el hashbang (#!) A la primera línea de su script. –
no hay necesidad de tener #!/usr/bin/php
en su código, basta con ejecutar secuencias de comandos CLI mediante php
, por ejemplo php /path/to/file.php
o /usr/bin/php /path/to/file.php
.
Pero si desea crear un script ejecutable que pueda ejecutarse desde el shell, debe resolver este problema. –
Por lo general, me parece una buena idea separar la lógica de la presentación. Cuando hago algo como esto, pongo tanto como sea posible en una biblioteca, y luego escribo interfaces cli y web separadas para ello.
Dicho esto, llamarlo con el comando php es probablemente una solución más fácil.
+1 para la separación de la lógica. Típicamente CLI y web requerirán interfaces separadas (interactuando con '$ argv' en lugar de' $ _GET' por ejemplo). Por lo tanto, no es necesario que se invoque el mismo * archivo * desde ambos. – ircmaxell
Resolví el problema usando el buffer de salida. Mi script ahora se ve así:
#!/usr/bin/php
<?php
@ob_end_clean();
...
Nota: No hay ?>
al final del archivo. Esta es una buena práctica al escribir scripts PHP. Esto evita que cualquier texto basura se imprima accidentalmente.
Nota: La documentación de PHP para ob_end_clean()
dice que:
El búfer de salida debe iniciarse por ob_start() con PHP_OUTPUT_HANDLER_CLEANABLE y banderas PHP_OUTPUT_HANDLER_REMOVABLE. De lo contrario, ob_end_clean() no funcionará.
Parece que esto se hace automáticamente cuando PHP se ejecuta desde la línea de comandos.
La solución de almacenamiento en búfer de salida anterior es un hack. No hagas eso.
Lo primero, en realidad se está mejor utilizando el comando env para determinar qué php se utiliza:
#!/usr/bin/env php
Luego le dan permiso para ser ejecutado por sí mismo:
chmod +x myfile
Así que en lugar de llamando a 'php myfile', ahora acaba de ejecutar:
./myfile
De esa carpeta. ¡Espero que esto ayude!
- 1. Aviso: propiedad indefinida: ¿cómo puedo evitar ese mensaje en PHP?
- 2. PHP: ¿cómo evitar redeclarar funciones?
- 3. ¿cómo puedo evitar ser redirigidos con PHP cURL
- 4. Cómo mostrar una variable php en html
- 5. ¿Cómo puedo mostrar imágenes con el framework php de Codeigniter?
- 6. ¿Cómo mostrar XML en HTML en PHP?
- 7. Mostrar calendario en php
- 8. ¿Puedo mostrar todas las cookies que configuré en PHP?
- 9. ¿Cómo puedo evitar compilaciones simultáneas en CruiseControl.NET?
- 10. ¿Cómo puedo evitar una InvalidCastException en .NET?
- 11. ¿Cómo puedo mostrar un combobox en Android?
- 12. ¿Cómo puedo mostrar un mensaje en Maven
- 13. ¿Cómo puedo mostrar las cookies en Codeigniter?
- 14. ¿Cómo puedo "Mostrar documentación" en Eclipse?
- 15. Mostrar valores de matriz en PHP
- 16. ¿Puedo mostrar GUID en windbg?
- 17. Evitar advertencias XML DOMDocument en php
- 18. ¿Cómo evitar los riesgos de seguridad de UNLINK en PHP?
- 19. Evitar el desplazamiento en segundo plano al mostrar ventanas emergentes
- 20. PHP: ¿Cómo puedo mostrar el contenido de un archivo de texto en mi página?
- 21. ¿Cómo puedo mostrar (eco/impresión) el nivel de informe de error establecido actualmente en PHP?
- 22. ¿Cómo puedo formatear el número solo para mostrar 1 lugar decimal en php?
- 23. Evitar el código duplicado (PHP)
- 24. ¿Cómo puedo evitar los cierres de Javascript?
- 25. ¿Cómo puedo evitar que se seleccione texto?
- 26. ¿Cómo puedo evitar el cambio de nombre?
- 27. ¿Cómo puedo evitar el estado global?
- 28. ¿Cómo puedo evitar que mercurial empuje subrepos?
- 29. ¿Cómo puedo evitar que CompileAssemblyFromSource pierda memoria?
- 30. ¿Cómo puedo evitar la inyección de DLL
Si ya utiliza apache para servir PHP, simplemente configure nginx como proxy inverso para apache. – Qwerty