Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    PHP update da 7.4 a 8.2

    Saluti a tutte/i e buon Anno Nuovo!

    Scrivo su questo forum essenzialmente per avere un vostro parere, se poi riusciste a darmi una dritta sarebbe fantastico, ecco di cosa si tratta:

    Non sono per niente un programmatore e/o esperto di PHP. Ho costruito 2 plugin per il sito WordPress che gestisco (per mia moglie) ed ho utilizzato questo linguaggio appoggiandomi alle mie conoscenze lavorative in campo Fortran77, Pascal e altre dinosaurerie di questo genere che però mi hanno aiutato non poco nel mettere insieme questi plugin e a farli funzionare come volevo.

    Tutto e' andato bene fino alla versione 7.4 di PHP. Quando il mio provider lo scorso dicembre mi ha avvertito che sarebbero passati alla versione 8.x ho per fortuna pensato di simulare il nuovo ambiente in cPanel e mi sono accorto che proprio questi due plugin erano rresponsabili del "fatal error" di PHP con conseguente crash di WP. Per non danneggiare le visite al sito, 1 mese fa ho disabilitato questi plugins (con rammarico) e ho cominciato a cercare soluzioni... che ad oggi sempre mi mancano. In verita' non so nemmeno da che parte cominciare a fare debugging. Ho preso in mano il manuale PHP ma non avendo alcun appiglio mi diventa impossibile qualsiasi tentativo.

    L'unica cosa che sono riuscito a produrre di concreto (ben poco...) e' l'error.log di WP che mi presenta una serie di informazioni che pero', con tutta la mia buona volonta' non sono riuscito a interpretare.

    Se qualche buon'anima riuscisse a darmi qualche indicazione su come procedere gliene sarei infinitamente grato. Di seguito un estratto di questo error.log dove e' registrato l'errore perdi uno dei due plugin. Ho provato ad andare alle righe riportate dal log ma non mi aiuta granchè:

    ----------------------------------------------------------------------------------------------------
    thrown in /home/astroliv/public_html/wp-includes/class-wp-widget.php on line 163
    [15-Dec-2023 14:52:45 UTC] PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function WP_Widget::__construct(), 0 passed in /home/astroliv/public_html/wp-includes/class-wp-widget-factory.php on line 62 and at least 2 expected in /home/astroliv/public_html/wp-includes/class-wp-widget.php:163
    Stack trace:
    #0 /home/astroliv/public_html/wp-includes/class-wp-widget-factory.php(62): WP_Widget->__construct()
    #1 /home/astroliv/public_html/wp-includes/widgets.php(115): WP_Widget_Factory->register('myWidget')
    #2 /home/astroliv/public_html/wp-content/plugins/zodiacal-period/zodiacal-period.php(52): register_widget('myWidget')
    #3 /home/astroliv/public_html/wp-includes/class-wp-hook.php(324): my_register_widgets('')
    #4 /home/astroliv/public_html/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters(NULL, Array)
    #5 /home/astroliv/public_html/wp-includes/plugin.php(517): WP_Hook->do_action(Array)
    #6 /home/astroliv/public_html/wp-includes/widgets.php(1858): do_action('widgets_init')
    #7 /home/astroliv/public_html/wp-includes/class-wp-hook.php(324): wp_widgets_init('')
    #8 /home/astroliv/public_html/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters(NULL, Array)
    #9 /home/astroliv/public_html/wp-includes/plugin.php(517): WP_Hook->do_action(Array)
    #10 /home/astroliv/public_html/wp-settings.php(643): do_action('init')
    #11 /usr/local/cpanel/3rdparty/wp-toolkit/plib/vendor/wp-cli/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1383): require('/home/astroliv/...')
    #12 /usr/local/cpanel/3rdparty/wp-toolkit/plib/vendor/wp-cli/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1302): WP_CLI\Runner->load_wordpress()
    #13 /usr/local/cpanel/3rdparty/wp-toolkit/plib/vendor/wp-cli/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
    #14 /usr/local/cpanel/3rdparty/wp-toolkit/plib/vendor/wp-cli/vendor/wp-cli/wp-cli/php/bootstrap.php(83): WP_CLI\Bootstrap\LaunchRunner->process(Object(WP_CLI\Bootstrap\BootstrapState) )
    #15 /usr/local/cpanel/3rdparty/wp-toolkit/plib/vendor/wp-cli/vendor/wp-cli/wp-cli/php/wp-cli.php(32): WP_CLI\bootstrap()
    #16 /usr/local/cpanel/3rdparty/wp-toolkit/plib/vendor/wp-cli/vendor/wp-cli/wp-cli/php/boot-fs.php(17): require_once('/usr/local/cpan...')
    #17 /usr/local/cpanel/3rdparty/wp-toolkit/plib/vendor/wp-cli/wpt-wp-cli.php(31): require_once('/usr/local/cpan...')
    #18 Command line code(1): require('/usr/local/cpan...')
    #19 {main}
    thrown in /home/astroliv/public_html/wp-includes/class-wp-widget.php on line 163

    ----------------------------------------------------------------------------------------------------

    Un grazie grosso cosi' in anticipo per una vs. risposta!

    Saluti
    Ernesto


    Installazione:
    CMS: WordPRess v6.4.2
    Tema: Catch Evolution PRO v4.1.1 con child-theme
    PHP: v8.2.13 (server)
    MySQL: v8.0.35 (server) v8.2.13 (client)
    Server web: Apache
    Arch. servere: Linux 4.18.0-513.5.1.el8_9.x86_64 x86_64

  2. #2
    Posta il codice del widget. Probabilmente stai usando un metodo obsoleto per registrarli e il problema è sorto con un upgrade di WordPress.

    https://developer.wordpress.org/them...th-a-namespace

  3. #3
    Ciao Filippo e grazie per il fulmineo feedback!

    Eccoil codice del plugin. Nel frattempo do un'occhiata al link che proponi.
    Se ti servono altre info fammi sapere.




    <?php
    /*
    Plugin Name: Zodiacal period
    Plugin Script: zodiacal_period.php
    Plugin URI: //localhost/astrolivetest.ch/zodiacal_period/
    Description: Grazie a questo widget &egrave; possibile pubblicare nella sidebar il periodo astrologico corrente e la pietra zodiacale corrispondente
    Version: 1.0
    License: GPL 2.0
    Author: Serpico57
    */

    class myWidget extends WP_Widget {
    function myWidget() {
    parent::__construct( false, 'Periodo astrologico' );
    }
    function widget( $args, $instance ) {
    extract($args);
    echo $before_widget;
    echo $before_title.$instance['title'].$after_title;

    // QUI INIZIA IL WIDGET ZODIACAL PERIOD (update 28.4.2020)
    // tolto "&nbsp;"" dopo "Siamo nel periodo astrologico"
    // e modificato h1 su h2
    ?>
    <body onLoad="avvia()" lang="it">
    <div class="zodiacal_period">
    <br></br>
    <h2><center>Siamo nel periodo astrologico&nbsp;<strong><script>getPeriod();</script></h2></strong>
    <h2>e una delle pietre di questo segno zodiacale &egrave; </center>
    <center><strong><script>getStone();</script></center></h2></strong></center>
    <script>getLink();</script>
    </div>
    <?php
    //FINE WIDGET ZODIACAL PERIOD

    echo $after_widget;
    }
    function update( $new_instance, $old_instance ) {
    return $new_instance;
    }
    function form( $instance ) {
    $title = esc_attr($instance['title']); ?>
    <p><label for="<?php echo $this->get_field_id('title');?>">
    Titolo: <input class="widefat" type="text" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" />

    </label></p>
    <?php
    }
    }

    function my_register_widgets() {
    register_widget( 'myWidget' );
    }

    add_action( 'widgets_init', 'my_register_widgets' );
    ?>

    Saluti
    Ernesto

  4. #4
    Rinomina il metodo:
    Codice PHP:
    function myWidget() {
        
    parent::__constructfalse'Periodo astrologico' );

    In:
    Codice PHP:
    function __construct() {
        
    parent::__constructfalse'Periodo astrologico' );


  5. #5
    ...ti chiamerai ben Filippo ma come alias, Angelo Informatico ti sta a pennello!!

    Il widget funziona nuovamente. Grazie di cuore


    se hai un attimo riesci ancora a dirmi se questa sintassi è stata modificata da PHP oppure è un effetto a cascata provocato da aggiornamenti di WordPress che da quanto ne so è scritto in PHP (come del resto tu supponevi nella prima risposta)?

    Grazie ancora

    Saluti
    Ernesto

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.