Zakázání autoloadu mpdf v composeru

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
n.u.r.v.
Člen | 485
+
0
-

Ahoj, na localhostu jsem aktualizoval přes composer nette na 2.2.6 a zároveň jsem přes composer přidal knihovnu mPDF. Na localu nebyl problém, ale když jsem teď toto nasadil na web, tak vznikl problém při generování temp: Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 64 bytes) in /x/y/z/w/projekt/vendor/nette/robot-loader/src/RobotLoader/RobotLoader.php:284

Určitě to bude tou knihovnou mpdf. Našel jsem si, že je možné robot loaderu zakázat procházení určitých složek pomocí netterobots.txt – Disallow: mpdf.

Ale jak se to řeší, když load má na starosti composer? Díky.

David Matějka
Moderator | 6445
+
0
-

Vypada to, ze mas vendor slozku pod spravou robot loaderu. Robot loader by mel skenovat pouze slozku app (pripadne jinou kde mas vlastni tridy, ale nikdy vendor), jako je to v bootstrapu

n.u.r.v.
Člen | 485
+
0
-

No, v bootstrap.php mám:

require __DIR__ . '/../vendor/autoload.php';
$configurator = new Nette\Configurator;
...
...
$configurator->createRobotLoader()
        ->addDirectory(__DIR__)
        ->addDirectory(__DIR__ . '/../vendor/others')
        ->register();

A ve staré verzi která funguje mám ve složce vendor/others:
mPDF (ručně přidanou bez composeru)
knihovnu pChart na grafy – také ručně nakopírovanou – nemá composer.

V nové verzi jsem jen dal nové nette a smazal ve vendor/others složku mPDF, kterou jsem nainstaloval nově přes composer – přidala se do vendor/. Ale to už nefunguje.

Když jsem se podíval do vendor/composer/autoload_classmap.php, tak tam je hodně položek mPDF včetně
‚mPDF‘ ⇒ $vendorDir . ‚/mpdf/mpdf/mpdf.php‘,

Editoval n.u.r.v. (3. 1. 2015 17:30)

n.u.r.v.
Člen | 485
+
0
-

ještě mě napadlo – nemůže vadit, že jsem tam nechal i starou složku vendor – přejmenovanou na vendor_old – kvůli záloze – abych v případě problému nemusel znovu kopírovat na ftp starou verzi…

protože v bootstrapu je $configurator->createRobotLoader()->addDirectory(__DIR__)

n.u.r.v.
Člen | 485
+
0
-

tak jsem nakonec to bootstrapu.php musel dát init_set pro zvětšení memory limitu na 128M. Po vygenerování cache jsem toto zas odstranil…