PHP файлы выполняются дважды, но только в Firefox - PullRequest
0 голосов
/ 01 сентября 2018

Это что-то действительно странное. У меня следующая структура страницы:

index.php

<?php
session_start();
include_once('src/functions.php');
logMe('index');
include_once(TEMPLATES_FOLDER . 'standard/header.php');
[...]
include_once(TEMPLATES_FOLDER . 'standard/footer.php');
?>

header.php

<?php logMe('header'); ?>

<!DOCTYPE html>
<html lang="en">
<head>

    [...]

    <?php if (isset($_SESSION['accountId'])) : ?>
        <script type="text/javascript">
            [...]
        </script>
    <?php endif; ?>

</head>
<body>

[...]

Я ожидаю получить 2 строки журнала, одну из index.php и одну из header.php (из-за функции logMe()).

Теперь, если я запускаю страницу в Firefox (61.0.2), я получаю 4 журнала. Если я запускаю его в Chrome (68.0.3440.106), я получаю 2 журнала. Так что в Firefox кажется, что он выполняет все дважды.

Что еще более странно, так это то, что если я удалю тег <script>, проблема, похоже, исчезнет, ​​поскольку Firefox регистрирует только 2 строки. Но даже если я верну пустой тег <script>, в нем будет 4 строки! Таким образом, ключ проблемы, кажется, в этом <script> теге, но как это может быть ??

Более того, у меня есть <script> тег также в footer.php. Затем я ожидаю получить 6 строк журнала, следуя этому поведению, но всегда получаю только 4. Только если я удаляю их обоих (из верхнего и нижнего колонтитула), я получаю правильное поведение (2 журнала).

Кто-нибудь знает, что происходит?


обновление

Согласно запросу raina77ow, это access.log различия:

  • Firefox зарегистрировал 16 строк, а Chrome зарегистрировал 15 строк
  • Строки Firefox, которых нет в журнале Chrome:
    • 127.0.0.1 - - [01 / Sep / 2018: 11: 47: 49 +0200] "GET /favicon.ico HTTP / 1.1" 404 209
    • 127.0.0.1 - - [01 / Sep / 2018: 11: 47: 49 +0200] "GET /src/lib/toastr/toastr.js.map HTTP / 1.1" 304 -
    • 127.0.0.1 - - [01 / Sep / 2018: 11: 47: 49 +0200] "GET /? PageId = 0 HTTP / 1.1" 200 4242 (эта строка повторяется дважды, один раз в начале журнала и один раз в конце)
  • Строки Chrome, которых нет в журнале Firefox:
    • 127.0.0.1 - - [01 / Sep / 2018: 11: 48: 40 +0200] "GET /src/lib/toastr/toastr.js.map HTTP / 1.1" 200 25633
    • 127.0.0.1 - - [01 / Sep / 2018: 11: 48: 40 +0200] "GET /src/lib/bootstrap-3.3.7/css/bootstrap.min.css.map HTTP / 1.1" 200 542194

Таким образом, Firefox фактически запрашивает ?pageId=0 дважды.

1 Ответ

0 голосов
/ 01 сентября 2018

Хорошо, похоже, что-то испортилось в моей установке Firefox. Я попытался запустить его в безопасном режиме, и проблема не показала. Поэтому я сделал полный сброс настроек, и теперь проблема больше не отображается.

Все равно не могу придумать никакой связи между проблемой и тегом <script> ...

...