programing

PHP 컴파일 오류: "배열에서 빈 배열 요소를 사용할 수 없습니다."

css3 2023. 8. 28. 21:16

PHP 컴파일 오류: "배열에서 빈 배열 요소를 사용할 수 없습니다."

저는 다음 구성 파일과 함께 bepsvpt/secure-headers 패키지를 사용하는 Laravel 5 프로젝트를 가지고 있습니다.

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' => [
            //
        ],
    ],
];

응용 프로그램을 실행하려고 할 때(웹 요청 또는php artisan), 다음 오류가 발생합니다.

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

물론, 파일의 4행은 완전히 괜찮아 보입니다!

여기서 무슨 문제가 있습니까?

이 오류는 온라인에서 찾을 수 있는 어느 곳에서도 문서화되지 않은 것으로 배열 내에 쉼표 두 개가 하나도 없는 상태에서 연속적으로 발생합니다.

제 경우, 이것은 실제로 오류 메시지에 표시된 4행이 아닌 파일의 42행에 나타났는데, 이는 "빈 배열 요소"의 실제 위치 대신 배열의 첫 번째 항목을 식별하는 컴파일러의 버그처럼 들립니다.


참고: PHP 7.2.15+, 7.3.2+ 및 7.4.0+에서는 배열 시작 부분의 줄 번호 대신 이전 유효한 요소의 줄 번호를 보고하도록 오류 메시지가 변경되었습니다.한 줄 이상 차이가 날 수도 있지만, 일반적으로 훨씬 쉽게 찾을 수 있을 정도로 문제에 가깝습니다.

저도 2호선을 가리키다가 6호선에 오류가 있었습니다.

익숙한 코드여서 문제 해결에 몇 시간을 허비했고 추가 시간이 언제인지 알 수 없었습니다.,의 배후에 있는'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'),
];

코드에서 두 쉼표 사이의 공백을 검색하기만 하면 됩니다., ,@Moshe Katz가 지적한 것과 같은 선에서.

이 실은 생명의 은인입니다.

이 오류가 발생했습니다. 오류가 발생한 곳으로 표시된 라인이 잘못되었습니다(아래 코드의 2행이 아닌 10행에 오류가 발생했습니다).

return Http::response(
        ["popularity" => 113.485,
        "vote_count" => 9016,
        "video" => false,
        "poster_path" => "/qa6HCwP4Z15l3hpsASz3auugEW6.jpg",
        "id" => 920,
        "adult" => false,
        "backdrop_path" => "/8KeWhoMpqbzZRyHPkTtWSLWkL5L.jpg",
        "original_language" => "en",
        "original_title" => "Cars",
        "genre_ids" => [,
          0 => 12,
          1 => 16,
          2 => 35,
          3 => 10751,
        ],
        "title" => "Cars",
        "vote_average" => 6.8,
        "overview" => "Lightning McQueen, a hotshot rookie race car driven to succeed, discovers that life is about the journey, not the finish line, when he finds himself unexpectedly detoured in the sleepy Route 66 town of Radiator Springs. On route across the country to the big Piston Cup Championship in California to compete against two seasoned pros, McQueen gets to know the town's offbeat characters.",
        "release_date" => "2006-06-08",
    ]);

문제는 대괄호 뒤에 쉼표를 추가하는 오타에서 발생했습니다. " ",

따라서 위의 제안을 시도해도 작동하지 않으면 "[]를 찾고 뒤에 오는 쉼표를 제거합니다.

언급URL : https://stackoverflow.com/questions/42058233/php-compile-error-cannot-use-empty-array-elements-in-arrays