66 votes

Erreur de compilation PHP: "Impossible d'utiliser des éléments de tableau vides dans des tableaux"

J'ai un projet Laravel 5 qui utilise le paquet bepsvpt / secure-headers avec le fichier de configuration suivant:

config/secure-headers.php

 <?php

return [
    'x-content-type-options' => 'nosniff',
    'x-download-options' => 'noopen',
    'x-frame-options' => 'sameorigin',
    'x-permitted-cross-domain-policies' => 'none',
    'x-xss-protection' => '1; mode=block',

    /*
     * Referrer-Policy
     *
     * Reference: https://w3c.github.io/webappsec-referrer-policy
     *
     * Available Value: 'no-referrer', 'no-referrer-when-downgrade', 'origin', 'origin-when-cross-origin',
     *                  'same-origin', 'strict-origin', 'strict-origin-when-cross-origin', 'unsafe-url'
     */

    'referrer-policy' => 'strict-origin-when-cross-origin',

    'hsts' => [
        'enable' => env('SECURITY_HEADER_HSTS_ENABLE', false),
        'max-age' => 15552000,
        'include-sub-domains' => false,
    ],

    /*
     * Content Security Policy
     *
     * Reference: https://developer.mozilla.org/en-US/docs/Web/Security/CSP
     *
     * csp will be ignored if custom-csp is not null.
     *
     * Note: custom-csp does not support report-only.
     */

    'custom-csp' => env('SECURITY_HEADER_CUSTOM_CSP', null),

    'csp' => [
        'report-only' => false,

        'report-uri' => env('CONTENT_SECURITY_POLICY_REPORT_URI', false),,

        'upgrade-insecure-requests' => false,

        'base-uri' => [
            //
        ],

        'default-src' => [
            //
        ],

        'child-src' => [
            //
        ],

        'script-src' => [
            'allow' => [
                //
            ],

            'hashes' => [
                // ['sha256' => 'hash-value'],
            ],

            'nonces' => [
                //
            ],

            'self' => false,

            'unsafe-inline' => false,

            'unsafe-eval' => false,
        ],

        'style-src' => [
            'allow' => [
                //
            ],

            'self' => false,

            'unsafe-inline' => false,
        ],

        'img-src' => [
            'allow' => [
                //
            ],

            'types' => [
                //
            ],

            'self' => false,

            'data' => false,
        ],

        /*
         * The following directives are all use 'allow' and 'self' flag.
         *
         * Note: default value of 'self' flag is false.
         */

        'font-src' => [
            //
        ],

        'connect-src' => [
            //
        ],

        'form-action' => [
            //
        ],

        'frame-ancestors' => [
            //
        ],

        'media-src' => [
            //
        ],

        'object-src' => [
            //
        ],

        /*
         * plugin-types only support 'allow'.
         */

        'plugin-types' => [
            //
        ],
    ],
];
 

Lorsque j'essaie d'exécuter l'application (requête Web ou php artisan ), j'obtiens le message d'erreur suivant:

 PHP Fatal error:  Cannot use empty array elements in arrays in C:\Web\myapp\config\secure-headers.php on line 4
 

Bien sûr, la ligne 4 du fichier est tout à fait correcte!

Quel est le problème ici?

305voto

Moshe Katz Points 3466

Cette erreur, qui n'est documentée nulle part en ligne, provient de la présence de deux virgules dans une rangée avec rien entre elles à l'intérieur du tableau.

Dans mon cas, cela est effectivement apparu à la ligne 42 du fichier, pas à la ligne 4 comme indiqué par le message d'erreur, qui ressemble à un bogue dans le compilateur qui identifie le premier élément du tableau au lieu de l'emplacement réel du "tableau vide" élément".

38voto

Ayeni TonyOpe Points 101

J'ai eu la même erreur, en pointant sur la ligne 2, l'erreur était sur la ligne 6.

J'ai passé des heures à résoudre des problèmes, impuissants, car il s'agissait d'un code familier et je ne savais pas quand un , supplémentaire était obtenu à la fin de 'available' => $faker->boolean(85),

 return [
  'id'          => $id,
  'user_id'     => $id,
  'slug'        => $slug,
  'speciality'  => $faker->randomElement(['Option A','Optoin B']),
  'available'   => $faker->boolean(85),,
  'subscription_ends_at' => $faker->dateTimeBetween('-5 day', '30 day'),
  'verified_at' => $faker->dateTimeBetween('-50 day', '-16 minute'),
];
 

Il suffit de chercher dans votre code ,, ou des espaces entre deux virgules , , sur la même ligne que celle indiquée par @Moshe Katz.

Ce fil est un épargnant de vie.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X