Věčný problém: Vlastní php.ini

nanuqcz
Člen | 822
+
+2
-

Ahoj,
pokaždé, když se na čistém PC snažím rozjet Nette/Tester, je to porod. A pokaždé se ten problém projevuje jinak, i když viník je vždy stejný: Vynucování vlastního php.ini.


Tak například teď:

Vytvořím v projektu vlastní (více-méně) prázdný php.ini:

[php]

memory_limit=512M

Při spuštění

./vendor/bin/tester -c ./php.ini ./tests

to na mě řve

Nette\NotSupportedException: PHP extension Tokenizer is not loaded.

a později ještě vyžaduje json extension. Do php.ini tedy píšu

[PHP]

extension=tokenizer.so
extension=json.so

memory_limit=512M

Teď ale řve zase jinou chybu:

PHP startup error: PHP Warning:  Module 'json' already loaded in Unknown on line 0
PHP Warning:  Module 'tokenizer' already loaded in Unknown on line 0

Nejdřív mu tedy vadí, že extension nenačítám, později zase, že jej načítám.

Nette 2.4.6
Nette/Tester 1.7.1
PHP 7.1.7
Apache 2.4.7
Ubuntu 14.04


Jediné řešení, které mi funguje, je smazat z Nette/Tester/Runner/Job.php parametr „-n“ při vytváření php-cgi procesu.

Opravdu Nette Tester musí na sílu zakazovat používání defaultního (systémového) php.ini? Proč nenechá volnost uživatelům, ať se rozhodnou, jestli chtějí používat systémový, nebo vlastní php.ini?

jiri.pudil
Nette Blogger | 1028
+
+1
-

Proč nenechá volnost uživatelům, ať se rozhodnou, jestli chtějí používat systémový, nebo vlastní php.ini?

Nechá, ale je to zatím bohužel jen v masteru.

Milo
Nette Core | 1283
+
+1
-

Jak psal @jiri.pudil, ve 2.x bude -C parameter. Prosím o strpení.

Jinak popis těch chyb mě mate. To spustíš Tester, zahlásí chybějící extension, upravíš php.ini, spustíš ho znovu úplně stejným CLI příkazem a on zahlásí, že už je extension loaded? Můžeš ho zkusit spustit s --debug parametrem? Nebo případně --info.

nanuqcz
Člen | 822
+
0
-

@jiri.pudil Výborně, tak to se těším :-)

@Milo Ano, přesně tak. --debug a --info zkusím večer, pak postnu výsledek.

nanuqcz
Člen | 822
+
+1
-

Tak opravdu to házelo pro stejný příkaz jiné výsledky. Bylo to ale způsobeno tím, že jsem kromě do nette/tester/Runner/Job.php vrtal i do nette/tester/Runner/ZendPhpInterpreter.php a do nette/tester/Runner/ZendPhpDbgInterpreter.php a nevrátil je do původní podoby všechny.

Aktuálně mi tedy funduje tento php.ini:

[PHP]

extension=tokenizer.so
extension=json.so

memory_limit=512M

spouštěný tímto příkazem:

./vendor/bin/tester -c ./php.ini ./tests

Editoval nanuqcz (10. 7. 2017 21:41)