Věčný problém: Vlastní php.ini
- nanuqcz
- Člen | 822
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 | 1029
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
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
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)