Требование файла с возвращаемым значением завершается неудачно. - PullRequest
0 голосов
/ 06 января 2019

У меня есть два простых файла (+ сгенерированных и загруженных композитором)

У меня есть простой файл php:

<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

require __DIR__ . '/vendor/composer/autoload_classmap.php';

echo 'OK';

где autoload_classmap.php генерируется на основе этого composer.json:

{
  "require-dev": {
    "symplify/easy-coding-standard": "5.3.*"
  },
  "config": {
    "optimize-autoloader": true
  }
}

Но php-скрипт завершается неудачно в соответствии с require. Там нет ошибки, данные не возвращаются. Браузер показывает только ERR_CONNECTION_RESET.

(конкретный пакет в composer, вероятно, не имеет значения, я выбрал его, потому что он имеет довольно много зависимостей)

Проблема заключается в размере требуемого файла (возможно, не в абсолютном размере файла, а в том, что количество возвращаемых строк в массиве окончательно играет роль), если я удаляю количество строк примерно до 1600 (я не удалось определить точное число - вероятно, учитывается длина отдельных строк).

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

Проблема (скорее всего) зависит от платформы: я попробовал ее на своем сервере, и она работала нормально, но когда я запускаю ее локально на машине с помощью Windows + WAMPServer (тестируется на двух разных машинах) через веб-браузер, происходит сбой с вышеупомянутым ошибка отключения Сбой как в Chrome, так и в Edge

Я использую Windows 10, PHP 7.2.12 (но также протестирован и с 7.3), Apache 2.4.37

С другой стороны, при запуске через CLI он снова работает нормально - поэтому я не думаю, что есть проблема с некоторыми конкретными настройками в php. Но опять же - наверное, что я знаю? :)

Я пытался найти причины, по которым require может молча провалиться, но я не смог ничего найти. И у меня не хватает идей, чтобы заставить его работать. Фреймворк, который я использую в своем реальном приложении, требует наличия этого файла, и по этой причине мне нужно держать optimize-autoloader в значении false (просто потому, что таким образом он будет генерировать гораздо меньший файл и требовать работы)

Есть идеи?

Спасибо

1 Ответ

0 голосов
/ 13 января 2019

Оказывается, Apache зарегистрировал это уведомление:

[mpm_winnt:notice] [pid 6696:tid 672] AH00428: Parent: child process 14924 exited with status 3221225725 -- Restarting.

, который направил меня к этому решению: https://www.codexpedia.com/apache-server/parent-child-process-exited-with-status-3221225725-restarting-on-xamp-apache/

Все, что мне нужно было сделать, это добавить:

<IfModule mpm_winnt_module>
   ThreadStackSize 8888888
</IfModule>

в файле httpd.conf.

...