Page 1 sur 1

Parse error: syntax error, unexpected '['

Posté : 07 nov. 2016, 17:44
par Damien PCSAT
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

Re: Parse error: syntax error, unexpected '['

Posté : 07 nov. 2016, 17:57
par @rthur
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/

Re: Parse error: syntax error, unexpected '['

Posté : 07 nov. 2016, 18:54
par Damien PCSAT
Merci @rthur de cette précision, je vais devoir songer à migrer, Nerim ne me propose qu'une version 5.3.

Re: Parse error: syntax error, unexpected '['

Posté : 07 nov. 2016, 19:48
par @rthur
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.