Autor Zpráva
hal_sk
Profil
Zdravím.
Ako nastavím php.ini, aby nezobrazovalo chybu pri prázdnej premennej?
Joker
Profil
Prázdná proměnná nevyhodí chybu, ale poznámku.
Jde vypnout zobrazování poznámek v error_reporting, ovšem to vypne i jiné poznámky.

Jinak "nejčistší" řešení je ve skriptu používat isset() nebo empty() pro odchycení prázdných proměnných.
Majkl578
Profil
error_reporting E_ALL ^ E_NOTICE
hal_sk
Profil
Majkl578
error_reporting E_ALL ^ E_NOTICE

Hmm, dal som to, všade kde som mohol a teraz to nevypisuje žiadne chyby, nielen pri prázdnych premenných, ale aj napr. pri volaní neznámych funkcií.
srigi
Profil
Majkl578
To je chybne, spravne:
E_ALL & ~E_NOTICE
Majkl578
Profil
---
srigi
Profil
Majkl578
Aj ten znak pre NOT je v tomto jedinom pripade odlisny od zbytku PHP.
ninja
Profil
Tak ted jste me zmatli. Ktera varianta tedy:

E_ALL ^ E_NOTICE

nebo
E_ALL & ~E_NOTICE


PHP manual na toto tema moc nesdeluje.
Majkl578
Profil
tak dle manualu je to jak jsem rikal:
// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL ^ E_NOTICE);


vice v manualu bitovych operaci
hal_sk
Profil
Hodnotu
E_ALL ^ E_NOTICE
som dal skoro všade kde bolo
error_reporting
. Tu je to.
Ale stále to zobrazuje "notice" pri výpise prázdnej premennej.
Toto mám na Wamp localhoste.
Na inom PC používam Xamp a tam je to tak, ako chcem (nezobrazuje sa "notice" pri výpise prázdnej premennej).
Tak som skúsil php.ini zo Xamp nakopírovať do Wamp. Ale to potom nezobrazuje nielen "notice" ale ani chyby, atď.

Bol by som vďačný ak by ste sa mi nato pozreli.
Alphard
Profil
problémem není prázdná proměnná, ale nenastavená proměnná

nejlepší řešení je použít funkci isset() a s nenastavenými proměnnými nepracovat
pokud se vám toto řešení nelíbí a zobrazování E_NOTICE považujete jako DoubleThink a další za kreténismus, můžete php.ini nastavit takto

error_reporting = E_ALL & ~E_NOTICE | E_STRICT


editujte správné php.ini a nezapomeňte restartovat server
hal_sk
Profil
Tak som skúsil:
error_reporting = E_ALL & ~E_NOTICE | E_STRICT


a "notice" to stále zobrazuje.
Notice: Undefined variable: a in C:\wamp\www\pokus\index.php on line 2
Môj aktuálny php.ini je tu.
joe
Profil
hal_sk
A kde máš to error reporting odkomentované?
Alphard
Profil
co to odkomentovat?

// tak jsem to nestihl, joe čekal celý den, aby byl rychlejší
hal_sk
Profil
joe
Alphard

Lamím, nerozumiem, kde čo treba odkomentovať?
joe
Profil
Alphard
:)) Mimochodem, pravděpodobně to nahradil úplně nahoře v tom komentáři :)

hal_sk
Na tomto řádku smaž první středník

;error_reporting = E_ALL & ~E_NOTICE | E_STRICT


Mj. tohle E_ALL ^ E_NOTICE vážně nefunguje?

edit: jasně, koukám ti přes rameno ;-)
Alphard
Profil
smaž ; ať tam zůstane jen
error_reporting = E_ALL & ~E_NOTICE | E_STRICT

nebo to může kamkoliv dopsat
jen jednou, ať se to zbytečně nemládí

// joe, děláš to schválně?
hal_sk
Profil
joe
Alphard
Tak tomu fakt nechápem.
Príkaz
error_reporting = E_ALL & ~E_NOTICE | E_STRICT

som odkomentoval, uložil php.ini, reštartoval server, spustil skript:
<?php
echo $a;
?>

A výsledok zas:
Notice: Undefined variable: a in C:\wamp\www\pokus\index.php on line 2
joe
Profil
Používej isset a empty, PHP tě naučí :)
hal_sk
Profil
No budem musieť, ajtak dík.
Joker
Profil
hal_sk
Jak nezobrazovat poznámky je přímo v PHP manuálu:
- ve skriptu: http://cz.php.net/error-reporting
- v php.ini: http://cz.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting
U obou je tam přímá ukázka na vynechání poznámek.

Každopádně ale předstírat, že problém neexistuje, není úplně ideální řešení problému.
hal_sk
Profil
Joker
Skúšal som to a zistil som že ak to uvediem do skriptu, tak to funguje.
Joker
Profil
V tom php.ini to taky musí fungovat- není náhodou v php.ini ještě později jiný zápis error reporting (anebo to není správný php.ini anebo to bude nějaký takový problém, bych tipoval)?
hal_sk
Profil
Joker
ee
Nechajme tak, vzdávam to. Prispôsobím sa zapisovaniu do skriptu. Neskôr si dám Xampp, tam je to ok.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0