У меня есть два простых файла (+ сгенерированных и загруженных композитором)
У меня есть простой файл 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 (просто потому, что таким образом он будет генерировать гораздо меньший файл и требовать работы)
Есть идеи?
Спасибо