|
php: логика работы оператора @ зависит от окружения ?
|
|||
---|---|---|---|
#18+
Имеется 2 сервера - на одном php 5.6 , на другом - php 5.4 . В обоих конфигах: Код: php 1.
На обоих серверах проверено через phpinfo: error_reporting = 32767 Вот этот код: Код: php 1. 2. 3. 4.
в первом случае никаких notice не генерирует, во втором - генерирует ( Undefined property: cl::$ttt ). Логично предположить, что в версии 5.4 оператор подавления не распространяет своё действие на вложенные выражения, в версии 5.6 - распространяет. Только вот на 1-м сервере ранее был php 5.3.3 - и никаких notice также не генерировалось. Так в чём причина ? Может, какие-то другие настройки php влияют на поведение этого оператора ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2016, 21:42 |
|
php: логика работы оператора @ зависит от окружения ?
|
|||
---|---|---|---|
#18+
Cyrax_02, А это имеет значение? Синтаксис для лентяя :)) Я бы это лучше написал вот так: Код: php 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2016, 03:09 |
|
php: логика работы оператора @ зависит от окружения ?
|
|||
---|---|---|---|
#18+
авторА это имеет значение? Синтаксис для лентяя :))В проекте используется ряд сторонних библиотек ( smarty и пр.), которые активно используют оператор @. Причём так, как показано в моём примере - для подавления ошибок при выполнении внутренних выражений. В итоге на php 5.4 получаем туеву хучу notice 'ов в логах. Посему задачу необходимо решить, не изменяя исходников этих библиотек и сохраняя уровень логирования NOTICE . На php 5.4 (если это из-за версии). Может, всё-таки не в версии дело ? Что из окружения может влиять на поведение @ ? И почему в официальной справке про это поведение ни слова ? И во всём Интернете - ни слова ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2016, 13:48 |
|
php: логика работы оператора @ зависит от окружения ?
|
|||
---|---|---|---|
#18+
Cyrax_02На php 5.4 (если это из-за версии).Затестил из командной строки на двух машинах с 5.4.36 (дебиан) и 5.4.45 (фряха) - собака давит нотис и там и там. Cyrax_02при выполнении внутренних выраженийНе припомню, чтобы в документации что-то было про внутренние (и внешние) выражения. Насколько понимаю, под выражением принимается всё до конца строки или закрывающей скобки. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2016, 14:48 |
|
php: логика работы оператора @ зависит от окружения ?
|
|||
---|---|---|---|
#18+
Как оказалось, дело в окружении. Не в версии php . А именно - в xdebug . Настройка xdebug.scream была включена: авторxdebug.scream Type: boolean, Default value: 0, Introduced in Xdebug >= 2.1 If this setting is 1, then Xdebug will disable the @ (shut-up) operator so that notices, warnings and errors are no longer hidden.Все настройки php просмотрел - ничего похожего не нашёл. А на xdebug не подумал, поскольку ошибки реально подавлялись (в тот момент xdebug был отключен - поэтому и подавлялись). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2016, 16:04 |
|
|
start [/forum/topic.php?fid=23&msg=39355430&tid=1460838]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 9ms |
total: | 121ms |
0 / 0 |