Shebang #! non riconosciuto in Ubuntu, file creato in Windows7 | Risolvi la codifica

Fondamentalmente, il file è stato rotto in alcuni punti lungo la strada da Windows7 a Ubuntu.

Come posso guardare una rappresentazione binaria del file per vedere cosa è successo?

Lo script della row di command PHP deve ancora avere l'apice di <?php in loro.

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

non functionrà, deve essere

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

Questo perché non esiste un "script php". Ci sono solo vari file di text che contengono blocchi di codice PHP all'interno di essi. Anche in modalità CLI, PHP si aspetta / richiede di vedere alless un block <?php . Altrimenti l'interpnetworking non eseguirà il kick in e non vedrà alcun codice, anche se hai dichiarato che è uno script PHP con lo shebang.

La modalità cli PHP è fondamentalmente un ripensamento postulato. PHP è iniziato come parser di script CGI lato server e non è stato modificato fondamentalmente da quella modalità.

Hai eseguito con ./ ?

IE:

 ./myscript.php 

Prova ad aprirlo con vi (m) e vedrai il problema. È un cattivo interpnetworking (^ M) alla fine di each row. Prova a convertirlo (fromdos o dos2unix), questo risolve il problema 😉

La mia ipotesi è che i file creati su Windows abbiano una BOM che confonde le cose.

Quando si utilizza Notepad ++ su un computer Windows, è ansible modificare il carattere EOL da Windows a UNIX andando a

Modifica> Conversione EOL> Formato UNIX

Opzione di menu EOL in Notepad ++

Controlla nuovamente la barra di stato di Notepad ++ in basso a destra per confermare la selezione.

Stato EOL in Notpadd ++

Dopo aver salvato ed eseguito dalla row di command, dovresti trovare che la direttiva interpnetworkingr PHP è ora riconosciuta correttamente.