Parse error: syntax error, unexpected '['

Petit nouveau ! | 2 Messages

07 nov. 2016, 17:44

Bonjour, j'ai un site Wordpress chez Nerim (mutualisé). J'ai lu que les parse error semblent souvent du à une version obsolète de PHP. A ce jour j'ai cette version : 5.0.51a-24+lenny5-log.

Suite à une mise à jour d'un module de Wordpress, mon site est KO et affiche le message suivant
Parse error: syntax error, unexpected '[' in /public_html/wordpress/wp-content/plugins/affilinet-performance-module/classes/Widget.php on line 65
J'ai bien compris le souci, mais je n'ai pas trouvé quoi ajouter (ou supprimer) sur cette ligne 65.
<?php

class Affilinet_Widget extends \WP_Widget
{

    public function __construct()
    {
        $widget_ops = array(
            'classname' => __NAMESPACE__ . '\\' . __CLASS__,
            'description' => 'affilinet Performance Ads'
        );
        parent::__construct('Affilinet_Performance_Ad_Widget', 'Affilinet Performance Ads', $widget_ops);

    }

    /**
     * Display the widget edit form
     *
     * @param array $instance
     *
     * @return void
     */
    public function form($instance)
    {
        $defaults = array(
            'size' => '728x90'
        );
        $instance = wp_parse_args((array)$instance, $defaults);
        $size = $instance['size'];
        ?>
        <p>
            <label for="<?php echo $this->get_field_id('size'); ?>"><?php _e('Banner size', 'affilinet'); ?></label>
            <select class="widefat" id="<?php echo $this->get_field_id('size'); ?>"
                    name="<?php echo $this->get_field_name('size'); ?>">
                <?php


                foreach ($this->allowedSizes() as $optGroup) {
                    ?>
                    <optgroup label="<?php echo $optGroup['name'] ?>">
                        <?php

                        foreach ($optGroup['values'] as $allowed_size) {
                            ?>
                            <option
                                value="<?php echo $allowed_size['value']; ?>"
                                <?php selected($size, $allowed_size['value']); ?>><?php echo $allowed_size['name']; ?></option>
                            <?php
                        }
                        ?>
                    </optgroup>
                    <?php
                }
                ?>
            </select>

        </p>
        <?php
    }


    public static function getAllowedSizesJsonForTinyMce()
    {
        $sizes = self::allowedSizes();
        $return = [];

        foreach ($sizes as $category) {
            $return[] = ['text' => $category['name'], 'disabled' => true];
            foreach ($category['values'] as $entry) {
                $return[] = ['text' => $entry['name'], 'value' => $entry['value'], 'disabled' => false];
            }
        }
        return json_encode($return, JSON_PRETTY_PRINT);
    }

    /**
     * Return a list of allowed banner sizes
     * @return array
     */
    private static function allowedSizes()
    {
        $allowedPlatFormSizes = [

            // DE
            1 => [
                ['name' => '----- DESKTOP -----', 'values' =>
                    [
                        ['value' => '728x90', 'name' => 'Super Banner (728px x 90px)'],
                        ['value' => '300x250', 'name' => 'Medium Rectangle (300px x 250px)'],
                        ['value' => '250x250', 'name' => 'Square Button (250px x 250px)'],
                        ['value' => '468x60', 'name' => 'Fullsize Banner (468px x 60px)'],
                        ['value' => '160x600', 'name' => 'Wide Scyscraper (160px x 600px)'],
                        ['value' => '120x600', 'name' => 'Scyscraper (120px x 600px)']
                    ]
                ],
                ['name' => '----- MOBILE -----', 'values' =>
                    [
                        ['value' => '168x28', 'name' => 'Feature Phone Medium Banner (168px x 28px)'],
                        ['value' => '216x36', 'name' => 'Feature Phone Large Banner (216px x 36px)'],
                        ['value' => '300x50', 'name' => 'Smartphone Banner (300px x 50px)'],
                        ['value' => '320x50', 'name' => 'Smartphone Wide Banner (320px x 50px)']
                    ]
                ]

            ],
            // AT
            7 => [
                    ['name' => '----- DESKTOP -----', 'values' =>
                        [
                            ['value' => '728x90', 'name' => 'Super Banner (728px x 90px)'],
                            ['value' => '300x250', 'name' => 'Medium Rectangle (300px x 250px)'],
                            ['value' => '250x250', 'name' => 'Square Button (250px x 250px)'],
                            ['value' => '468x60', 'name' => 'Fullsize Banner (468px x 60px)'],
                            ['value' => '160x600', 'name' => 'Wide Scyscraper (160px x 600px)'],
                            ['value' => '120x600', 'name' => 'Scyscraper (120px x 600px)']
                        ]
                    ],

                    /**
                     *  mobile sizes not yet available in AT
                     **/

                    /*
                    ['name' => '----- MOBILE -----', 'values' =>
                        [
                            ['value' => '168x28', 'name' => 'Feature Phone Medium Banner (168px x 28px)'],
                            ['value' => '216x36', 'name' => 'Feature Phone Large Banner (216px x 36px)'],
                            ['value' => '300x50', 'name' => 'Smartphone Banner (300px x 50px)'],
                            ['value' => '320x50', 'name' => 'Smartphone Wide Banner (320px x 50px)']
                        ]
                    ]*/
            ],
            // CH
            6 => [
                ['name' => '----- DESKTOP -----', 'values' =>
                    [
                        ['value' => '728x90', 'name' => 'Super Banner (728px x 90px)'],
                        ['value' => '300x250', 'name' => 'Medium Rectangle (300px x 250px)'],
                        ['value' => '250x250', 'name' => 'Square Button (250px x 250px)'],
                        ['value' => '468x60', 'name' => 'Fullsize Banner (468px x 60px)'],
                        ['value' => '160x600', 'name' => 'Wide Scyscraper (160px x 600px)'],
                        ['value' => '120x600', 'name' => 'Scyscraper (120px x 600px)']
                    ]
                ],
                /**
                 *  mobile sizes not yet available in CH
                 **/
                /*
                ['name' => '----- MOBILE -----', 'values' =>
                    [
                        ['value' => '168x28', 'name' => 'Feature Phone Medium Banner (168px x 28px)'],
                        ['value' => '216x36', 'name' => 'Feature Phone Large Banner (216px x 36px)'],
                        ['value' => '300x50', 'name' => 'Smartphone Banner (300px x 50px)'],
                        ['value' => '320x50', 'name' => 'Smartphone Wide Banner (320px x 50px)']
                    ]
                ]
                */

            ],
            // UK
            2 => [
                ['name' => '----- DESKTOP -----', 'values' =>
                    [
                        ['value' => '728x90', 'name' => 'Super Banner (728px x 90px)'],
                        ['value' => '300x250', 'name' => 'Medium Rectangle (300px x 250px)'],
                        ['value' => '250x250', 'name' => 'Square Button (250px x 250px)'],
                        ['value' => '468x60', 'name' => 'Fullsize Banner (468px x 60px)'],
                        ['value' => '160x600', 'name' => 'Wide Scyscraper (160px x 600px)'],
                        ['value' => '120x600', 'name' => 'Scyscraper (120px x 600px)']
                    ]
                ],
                /**
                 *  mobile sizes not yet available in UK
                 **/
                /*
                ['name' => '----- MOBILE -----', 'values' =>
                    [
                        ['value' => '168x28', 'name' => 'Feature Phone Medium Banner (168px x 28px)'],
                        ['value' => '216x36', 'name' => 'Feature Phone Large Banner (216px x 36px)'],
                        ['value' => '300x50', 'name' => 'Smartphone Banner (300px x 50px)'],
                        ['value' => '320x50', 'name' => 'Smartphone Wide Banner (320px x 50px)']
                    ]
                ]*/
            ],
            // FR
            3 => [
                ['name' => '----- DESKTOP -----', 'values' =>
                    [
                        ['value' => '728x90', 'name' => 'Super Banner (728px x 90px)'],
                        ['value' => '300x250', 'name' => 'Medium Rectangle (300px x 250px)'],
                        ['value' => '250x250', 'name' => 'Square Button (250px x 250px)'],
                        ['value' => '468x60', 'name' => 'Fullsize Banner (468px x 60px)'],
                        ['value' => '160x600', 'name' => 'Wide Scyscraper (160px x 600px)'],
                        ['value' => '120x600', 'name' => 'Scyscraper (120px x 600px)'],
                        ['value' => '300x600', 'name' => 'Half Page (300px x 600px)']
                    ]
                ],
                ['name' => '----- MOBILE -----', 'values' =>
                    [
                        ['value' => '168x28', 'name' => 'Feature Phone Medium Banner (168px x 28px)'],
                        ['value' => '216x36', 'name' => 'Feature Phone Large Banner (216px x 36px)'],
                        ['value' => '300x50', 'name' => 'Smartphone Banner (300px x 50px)'],
                        ['value' => '320x50', 'name' => 'Smartphone Wide Banner (320px x 50px)']
                    ]
                ]

            ],
            // NL - currently not implemented
            4 => [
                ['name' => '----- DESKTOP -----', 'values' =>
                    [
                        ['value' => '728x90', 'name' => 'Super Banner (728px x 90px)'],
                        ['value' => '300x250', 'name' => 'Medium Rectangle (300px x 250px)'],
                        ['value' => '250x250', 'name' => 'Square Button (250px x 250px)'],
                        ['value' => '468x60', 'name' => 'Fullsize Banner (468px x 60px)'],
                        ['value' => '160x600', 'name' => 'Wide Scyscraper (160px x 600px)'],
                        ['value' => '120x600', 'name' => 'Scyscraper (120px x 600px)'],
                        ['value' => '300x600', 'name' => 'Half Page (300px x 600px)']
                    ]
                ],
                /**
                 *  mobile sizes not yet available in NL
                 **/
                /*
                ['name' => '----- MOBILE -----', 'values' =>
                    [
                        ['value' => '168x28', 'name' => 'Feature Phone Medium Banner (168px x 28px)'],
                        ['value' => '216x36', 'name' => 'Feature Phone Large Banner (216px x 36px)'],
                        ['value' => '300x50', 'name' => 'Smartphone Banner (300px x 50px)'],
                        ['value' => '320x50', 'name' => 'Smartphone Wide Banner (320px x 50px)']
                    ]
                ]
                */
            ]
        ];


        return $allowedPlatFormSizes[(int)get_option('affilinet_platform', 1)];

    }

    /**
     * Handle widget update process
     *
     * @param array $new_instance
     * @param array $old_instance
     *
     * @return array
     */
    public function update($new_instance, $old_instance)
    {
        $instance = $old_instance;
        $instance['size'] = $new_instance['size'];

        return $instance;

    }

    /**
     * Display the widget
     *
     * @param array $args
     * @param array $instance
     */
    public function widget($args, $instance)
    {

        extract($args);
        /** @var String $before_widget */
        echo $before_widget;

        echo Affilinet_PerformanceAds::getAdCode($instance['size']);

        /** @var String $after_widget */
        echo $after_widget;
    }
}
Bien entendu, j'ai contacté le support officiel (Nerim et en l'occurrence Affilinet) mais si je peux avoir une piste avant la réponse officielle, je suis preneur. ;)
Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

07 nov. 2016, 17:57

Bonjour, j'ai un site Wordpress chez Nerim (mutualisé). J'ai lu que les parse error semblent souvent du à une version obsolète de PHP. A ce jour j'ai cette version : 5.0.51a-24+lenny5-log.
Cette version de PHP à 11 ans !!!
:arrow: Demande à Nerim de te mettre sur une infrastructure + récente car tu t'exposes à de gros soucis si tu restes sur cette version.

Si ils refusent, change d'hébergeur.

Wordpress, demande une version 5.6 minimum de PHP pour fonctionner correctement : https://wordpress.org/about/requirements/
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 2 Messages

07 nov. 2016, 18:54

Merci @rthur de cette précision, je vais devoir songer à migrer, Nerim ne me propose qu'une version 5.3.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

07 nov. 2016, 19:48

Je rajoute une petite précision, Wordpress recommande une version de PHP supérieure ou égale à la 5.6.

Toutefois, et c'est précisé sur leur page, Wordpress fonctionne sur toutes les versions de PHP supérieure ou égale à la 5.2.4 même si ce n'est pas recommandé car ce sont des versions en fin de vie.
Donc c'est déjà mieux si tu migres en 5.3 même si ce n'est pas l'idéal.
Quand tout le reste a échoué, lisez le mode d'emploi...