Newsgroup: it.comp.www.php
Titolo: PHP 7 upgrade

Ho un hosting condiviso, di quelli da 50 euro all'anno e hanno PHP 5
montato. In questo caso come sarà possibile testare i miei script .php
con la nuova versione PHP 7 mantenendo il sito funzionante sotto PHP 5?
 
Sarà possibile mettere una direttiva in php.ini per fare lo switch tra i
due PHP e testare i nuovi script?
-- 
Sandro kensan 
www.kensan.it
 & 
www.qiqi.it
 geek site
Saluto gli agenti della NSA - Hello NSA - 
www.nsa.gov
 

 due PHP e testare i nuovi script?
 
No.
 
Puoi usare Vagrant o Puphpet per crearti una virtualmachine in cui 
installare esattamente la stessa versione che hai sull'hosting.
 
Se usi PHPStorm puoi forzarlo a usare una certa versione di PHP, in modo 
che ti segnali come errore se usi caratteristiche introdotte nelle versioni 
successive.
 
A parte questo, a meno che non usi caratteristiche del 7 apposta, ci sono 
forse meno incompatibilità tra PHP 5.6 e PHP 7 che tra la 5.2 e la 5.4. :)
 
Bye.
 

 Bye.
 
Posso approfittarne? Non usando le classi e usando solo il PDO per
accedere al database, c'è dell'altro che potrei fare per avere uno
switch indolore? O comunque con pochi bug?


 switch indolore? O comunque con pochi bug?
 
Anche usando le classi, la compatibilità è quasi totale.
 
Qui trovi le incompatibilità tra la 5.6 e la 7:
 
http://php.net/manual/en/migration70.incompatible.php
 
 
Come vedi, a meno di aver usato edge-cases, roba deprecata da parecchio o 
hack, la compatibilità è altissima.
 
Bye.

 aggiornato.


 con la nuova versione PHP 7 mantenendo il sito funzionante sotto PHP 5?
 
Ma perché non testi i tuoi script in locale sulla tua macchina
con PHP 7 installato, prima di un eventuale upload sul server?
E' una pratica fattibile e sempre consigliabile.
 
 

 
 
E beh meglio di così che ti possono dare... ;-)
 
Hai pure il tempo di fare tranquillante quanti test vuoi sui
tuoi script in locale, prima del prossimo upgrade del server ;-)
 
 

 E' una pratica fattibile e sempre consigliabile.
 
Io sono un neofita della programmazione in php ma ho visto che non è la
stessa cosa eseguire dal server oppure fare un $ php script.php
 
immagino che io sia un po' troppo inesperto per queste cose.


 immagino che io sia un po' troppo inesperto per queste cose.
 
 
Ti stanno consigliando di creare una macchina virtuale con un server web sul tuo computer in locale in modo da testare il preciso comportamento che avrebbe il sito una volta installato sul nuovo server.
 
Quindi devi imparare a gestire un virtualizzatore, imparare a installare e configurare Apache2 + PHP7 + MySQL o la tua configurazione specifica, capire come spostare i documenti e il db. A quel punto hai un server web e potrai procedere con il debug del programma in locale.
 
Secondo me la via migliore e già stata indicata è l'utilizzo di virtualbox(
https://www.virtualbox.org
) +Vagrant (
https://www.vagrantup.com
).
 
Vagrant ha già delle box (macchine virtuali) "prefabbricate", ovvero dei server già installati che vagrant si può scaricare autonomamente e che ti risparmiano una parte di lavoro da sistemista.
 
Riassumendo: studiati approfonditamente Vagrant e hai risolto la parte sistemistica.
 
Se poi ti sentissi ispirato potresti imparare Git, non tanto come sistema di workgroup, ma come sistema organizzato di backup, perché durante il debug è facile causare arrosti indicibili e con git tieni traccia delle modifiche e puoi recuperare il singolo o tutti file ad un determinato stato.
 

 ha scritto:

Beh io senza scomodare l'allestimento di una macchina virtuale,
mi scaricherei la versione di XAMPP con PHP 5.6 e l'ultima versione
con PHP 7 e userei entrambe per fare i test in locale. Penso che per
l'OP sia più semplice ed immediato.
 
 

 immagino che io sia un po' troppo inesperto per queste cose.
 
Non è un problema, PHP ha una curva di apprendimento non ripida ma
ben bilanciata.
 
 

 
 
Mi sembra giusto :)
 
Del resto, così funziona ovunque.. se hai un applicativo PHP5 chiedi una
macchina con PHP5, se ti serve la 7, chiedi una macchina con la 7.
No? :)
 
Ciao!

 le istruzioni del linguaggio sempre quelle sono ;-)
 
Ni.
 
Le istruzioni sono sempre quelle, ma parti fondamentali sono diverse.
 
Per esempio $_SERVER contiene valori completamente diversi.
 
E, in generale, il flusso di esecuzione sarà diversi tra un'applicazione 
CLI e una web, anche se certi framewok cercano di unificare il più 
possibile.
 
Bye.
 

 possibile.
 
Certo ma le tantissimissime funzioni sono sempre lì pronte a fare
il loro dovere! Sia che si lavori sul server che da CLI. Per esempio,
via CLI una chiamata alla funzione "trim" ti restituisce la stessa
cosa che ti restituirebbe se la chiamata avviene sul server.
 
 

 l'OP sia più semplice ed immediato.
 
Grazie per le indicazioni ma io penso di fare la cosa più semplice
ovvero approntare in modo teorico il mio sito in modo che funzioni su
PHP7 e intanto farlo girare su PHP5. Per esempio togliere tutte le
chiamate a mysql fatto non tramite PDO e informarmi se c'è dell'altro
che riguarda i miei script e poi fare lo switch e lavorare un po' di ore
col sito off line fino a quando non riesco a metterlo a posto.
 
Poi magari cercare qualche programma che mi segnali gli eventuali punti
critici dei miei script con php7, forse ne compariranno.
 
Grazie a tutti.


 cosa che ti restituirebbe se la chiamata avviene sul server.
 
Sperabilmente la trim è dentro uno script che fa qualcosa.
Come chiami quello script è totalmente diverso tra CLI e Webserver.
Per esempio, se hai un controller che usa PRS7, la firma sarà
 
class MioController {
  public function indexAction(Request $req, Response $res) {
   ...
   trim(...);
   ...
  }
}
 
A quel punto non ti basta fare
 
php MioController.php
 
ma devi mockare la Request, creare una Response, istanziare la classe e 
richiamare la funzione.
 
Tutta roba che fai negli unit test, ma appunto non direttamente da CLI.
 
Bye.
 
 

 critici dei miei script con php7, forse ne compariranno.
 
Mah, come ti è stato detto è già più che sufficiente guardarsi
il manuale ufficiale con le info di compatibilità dell'upgrade PHP
5.6 > 7
 
 

 Tutta roba che fai negli unit test, ma appunto non direttamente da CLI.
 
Sicuramente, ma io intendevo semplici script batch con istruzioni
di manipolazione di stringhe. Stessi trattamenti che si possono fare
su di una stringa in una pagina web PHP lineare.
 
 
 

 su di una stringa in una pagina web PHP lineare.
 
Stavamo parlando di testare script web, non script CLI, con la nuova 
versione di PHP 7.
 
Bye.