Visualizzazione risultati 1 fino 16 di 16
Like Tree3Likes
  • 1 Post By darbula
  • 1 Post By alemoppo
  • 1 Post By alemoppo

Discussione: Laravel on AlterVista 🎅

  1. #1
    laravista non è connesso Utente AlterBlog
    Data registrazione
    07-12-2019
    Messaggi
    38

    Predefinito Laravel on AlterVista 🎅

    Per chi è interessato ad usare Laravel su AlterVista
    sto facendo il porting del mio progetto su Laravel 10
    condividendo in questa discussione problemi e soluzioni.

    Questa è la prima modifica:

    Codice:
    Rognoni@Host-002 laravista % git diff
    diff --git a/Dockerfile b/Dockerfile
    index e34afcf..de560dd 100644
    --- a/Dockerfile
    +++ b/Dockerfile
    @@ -1,4 +1,4 @@
    -FROM php:7.3-apache
    +FROM php:8.2-apache
    e dopo il build dell'immagine, eseguendola:

    Codice:
    Rognoni@Host-002 laravista % docker run --rm -p 80:80 -v "$PWD/src":/var/www/html --name running laravista 
    AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
    AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
    PHP Fatal error:  Directive 'track_errors' is no longer available in PHP in Unknown on line 0
    [Wed Jun 07 18:50:02.230755 2023] [:emerg] [pid 1] AH00020: Configuration Failed, exiting
    <br />
    <b>Fatal error</b>:  Directive 'track_errors' is no longer available in PHP in <b>Unknown</b> on line <b>0</b><br />
    si ottiene questo Fatal error

  2. #2
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    track_errors deprecata da php 7.2 e rimossa da php 8.
    Ultima modifica di darbula : 08-06-2023 alle ore 21.10.55
    laravista likes this.

  3. #3
    laravista non è connesso Utente AlterBlog
    Data registrazione
    07-12-2019
    Messaggi
    38

    Predefinito

    Ho dovuto fare questa modifica track_errors = Off

    Codice:
    diff --git a/config/php.ini b/config/php.ini
    index c435249..af3c2ac 100644
    --- a/config/php.ini
    +++ b/config/php.ini
    @@ -529,7 +529,7 @@ report_memleaks = On
     ; Development Value: On
     ; Production Value: Off
     ; http://php.net/track-errors
    -track_errors = On
    +track_errors = Off

  4. #4
    laravista non è connesso Utente AlterBlog
    Data registrazione
    07-12-2019
    Messaggi
    38

    Predefinito

    Invece questo errore non me lo aspettavo

    ErrorException
    Codice:
    Undefined variable $pipes
    https://laravista.altervista.org/L10x/artisan/migrate

  5. #5
    laravista non è connesso Utente AlterBlog
    Data registrazione
    07-12-2019
    Messaggi
    38

    Predefinito

    Per caso è disabilitato proc_open su PHP 8.2 ?

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,681

    Predefinito

    No, su AlterVista non è possibile eseguire processi o comunque quella estensione. Per cosa ti serviva?

    Ciao!

  7. #7
    laravista non è connesso Utente AlterBlog
    Data registrazione
    07-12-2019
    Messaggi
    38

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    No, su AlterVista non è possibile eseguire processi o comunque quella estensione. Per cosa ti serviva?

    Ciao!
    In teoria nella versione precedente di Laravel funziona correttamente:

    https://laravista.altervista.org/L8x/artisan/migrate

    devo indagare meglio questo errore: Undefined variable $pipes

    https://laravista.altervista.org/L10x/artisan/migrate

    vendor/symfony/console/Terminal.php:220

    Codice:
        private static function readFromProcess(string|array $command): ?string
        {
            if (!\function_exists('proc_open')) {
                return null;
            }
    
            $descriptorspec = [
                1 => ['pipe', 'w'],
                2 => ['pipe', 'w'],
            ];
    
            $cp = \function_exists('sapi_windows_cp_set') ? sapi_windows_cp_get() : 0;
    
            $process = proc_open($command, $descriptorspec, $pipes, null, null, ['suppress_errors' => true]);
            if (!\is_resource($process)) {
                return null;
            }
    
            $info = stream_get_contents($pipes[1]);
            fclose($pipes[1]);
            fclose($pipes[2]);
            proc_close($process);
    
            if ($cp) {
                sapi_windows_cp_set($cp);
            }
    
            return $info;
        }

  8. #8
    laravista non è connesso Utente AlterBlog
    Data registrazione
    07-12-2019
    Messaggi
    38

    Predefinito

    Sembra che ci siano due risultati diversi:

    • PHP 7.3 function_exists('proc_open') --> FALSE
    • PHP 8.2 function_exists('proc_open') --> TRUE

  9. #9
    laravista non è connesso Utente AlterBlog
    Data registrazione
    07-12-2019
    Messaggi
    38

    Predefinito

    L'unica cosa che posso fare è un workaround per forzare l'uscita con true ||

    Codice:
        private static function readFromProcess(string|array $command): ?string
        {
            if (true || !\function_exists('proc_open')) {
                return null;
            }
    
            [...]

  10. #10
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,681

    Predefinito

    Su PHP 8+ la funzione "esiste" ma ritorna sempre false (non può essere usata), questo è stato fatto perché altrimenti richiamando quella funzione, si avrebbe un fatal error su PHP8+.

    Ciao!
    laravista likes this.

  11. #11
    laravista non è connesso Utente AlterBlog
    Data registrazione
    07-12-2019
    Messaggi
    38

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Su PHP 8+ la funzione "esiste" ma ritorna sempre false (non può essere usata), questo è stato fatto perché altrimenti richiamando quella funzione, si avrebbe un fatal error su PHP8+.

    Ciao!
    Quindi a differenza di PHP 7.3 nel caso di PHP 8.2 la funzione proc_open non è stata messa in questa configurazione di php.ini

    Codice:
    disable_functions = proc_open

  12. #12
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,681

    Predefinito

    file_exists() ritorna true come hai indicato, però è stata sostituita con una funzione fake che semplicemente ritorna false (e non fa altro).

    Ciao!
    laravista likes this.

  13. #13
    laravista non è connesso Utente AlterBlog
    Data registrazione
    07-12-2019
    Messaggi
    38

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    file_exists() ritorna true come hai indicato, però è stata sostituita con una funzione fake che semplicemente ritorna false (e non fa altro).

    Ciao!
    Per evitare di andare a modificare il codice di Laravel (nel vendor) sto cercando se c'è un modo per disabilitare la funzione "incriminata" usando .htaccess

  14. #14
    laravista non è connesso Utente AlterBlog
    Data registrazione
    07-12-2019
    Messaggi
    38

    Predefinito

    Una curiosità: come mai su PHP 8.2 si è preferito sostituire la funzione proc_open con una funzione fake invece di disabilitarla come su PHP 7.3 ??

    Codice:
    PHP 7.3 function_exists('proc_open') --> FALSE
    PHP 8.2 function_exists('proc_open') --> TRUE

  15. #15
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,681

    Predefinito

    Perché richiamarla in PHP8+ genererebbe un fatal.

    Ciao!

  16. #16
    laravista non è connesso Utente AlterBlog
    Data registrazione
    07-12-2019
    Messaggi
    38

    Predefinito

    Accetto suggerimenti per trovare il miglior workaround possibile per questo issues, possibilmente senza dover mettere mano alle librerie nel /vendor se possibile

    https://github.com/rognoni/catlink/issues/1

    Grazie

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •