Shebang #! no reconocido en Ubuntu, archivo creado en Windows7 | Solucionar problemas de encoding

Básicamente, el archivo se rompió en algún lugar en el camino de Windows7 a Ubuntu.

¿Cómo puedo ver una representación binaria del archivo para ver qué sucedió?

La secuencia de comandos de línea de comandos de PHP todavía tiene que tener el abrelatas en ellos.

 #!/usr/bin/php echo "hi mom!\n"; 

no funcionará, tiene que ser

 #!/usr/bin/php  

Esto se debe a que no existe un "script php". Solo hay varios archivos de texto que tienen bloques de código PHP incrustados en ellos. Incluso en modo CLI, PHP espera / requiere ver al menos un bloque . De lo contrario, el intérprete no responderá y no verá el código, aunque hayas dicho que es un script PHP con el shebang.

El modo PHP cli es básicamente una idea de último momento pirateada. PHP comenzó como un analizador de secuencias de comandos CGI del lado del servidor y no ha cambiado fundamentalmente desde ese modo.

¿Corriste con un ./ ?

ES DECIR:

 ./myscript.php 

Intenta abrirlo con vi (m) y verás el problema. Es un mal intepreter (^ M) al final de cada línea. Intenta convertirlo (fromdos o dos2unix), esto debería solucionar el problema 😉

Supongo que los archivos creados en Windows tienen una lista de materiales que es confusa.

Al utilizar Notepad ++ en una máquina con Windows, se puede cambiar el carácter EOL de Windows a UNIX yendo a

Edición> Conversión EOL> Formato UNIX

Opción de menú EOL en Notepad ++

Vuelva a verificar la barra de estado de Notepad ++ en la parte inferior derecha para confirmar su selección.

Estado de EOL en Notpadd ++

Después de guardar y ejecutar desde la línea de comandos, debe encontrar que la directiva de intérprete de PHP ahora se reconoce correctamente.