Опция php.ini error_reporting путается с плагином phpcs для vscode

У меня есть плагин vscode, который использует phpcs для линтинга.

Я получаю эту ошибку:

phpcs: Unknown error ocurred. Please verify that C:\Users\David\AppData\Roaming\Composer\vendor\bin\phpcs --report=json -q --encoding=UTF-8 --standard=dev/setup/codesniffer/ruleset.xml --error-severity=5 --warning-severity=5 --stdin-path=C:\xampp7\htdocs\person.class.php - returns a valid json object.

Если я запускаю команду на терминале с помощью error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT, я получаю этот вывод:

{"totals":{"errors":0,"warnings":0,"fixable":0},"files":{"C:\\xampp7\\htdocs\\person.class.php":{"errors":0,"warnings":0,"messages":[]}}}

Если я запускаю команду на терминале с помощью error_reporting = E_ALL, я получаю этот вывод:

Xdebug: [Config] The setting 'xdebug.trace_output_dir' has been renamed, see the upgrading guide at https://xdebug.org/docs/upgrade_guide#changed-xdebug.trace_output_dir (See: https://xdebug.org/docs/errors#CFG-C-CHANGED)
{"totals":{"errors":0,"warnings":0,"fixable":0},"files":{"C:\\xampp7\\htdocs\\person.class.php":{"errors":0,"warnings":0,"messages":[]}}}

Я знаю, что могу просто исправить xdebug.trace_output_dir, но в будущем появится что-то еще.

Как я могу это исправить? Разве display_errors = Off не следует избегать подобных вещей?

Редактировать:

Я могу указать плагин на исполняемый файл phpcs.bat

@echo off
REM PHP_CodeSniffer detects violations of a defined coding standard.
REM 
REM @author    Greg Sherwood <[email protected]>
REM @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600)
REM @license   https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence

if "%PHP_PEAR_PHP_BIN%" neq "" (
    set PHPBIN=%PHP_PEAR_PHP_BIN%
) else set PHPBIN=php

"%PHPBIN%" -d display_errors=off "%~dp0\phpcs" %*

Здесь я могу установить такие параметры, как -d display_errors=off, которые у меня уже есть php.ini

Вот соответствующие варианты:

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
error_reporting = E_ALL
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024

Это показывает ошибку Xdebug.

error_reporting = E_ALL
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024

Это не так.

Может быть, xdebug печатает в STDOUT вместо STDERR?

Редактировать2:

Пока этим займусь php -d error_reporting=22527 -r "echo E_ALL & ~E_DEPRECATED & ~E_STRICT;"

Редактировать3:

Снова ошибки.

php -i | grep "error"

display_errors => STDERR => STDERR
display_startup_errors => On => On
error_append_string => no value => no value
error_log => C:/xampp7\php\logs\php_error_log => C:/xampp7\php\logs\php_error_log
error_prepend_string => no value => no value
error_reporting => 32767 => 32767
html_errors => Off => Off
ignore_repeated_errors => Off => Off
log_errors => On => On
log_errors_max_len => 1024 => 1024
track_errors => Off => Off
xmlrpc_error_number => 0 => 0
xmlrpc_errors => Off => Off
intl.error_level => 0 => 0
xdebug.force_display_errors => Off => Off
xdebug.force_error_reporting => 0 => 0
xdebug.show_error_trace => Off => Off
xdebug.start_upon_error => default => default

php -d error_reporting=22527 -d display_errors=off -i | grep "error"

display_errors => Off => Off
display_startup_errors => On => On
error_append_string => no value => no value
error_log => C:/xampp7\php\logs\php_error_log => C:/xampp7\php\logs\php_error_log
error_prepend_string => no value => no value
error_reporting => 22527 => 22527
html_errors => Off => Off
ignore_repeated_errors => Off => Off
log_errors => On => On
log_errors_max_len => 1024 => 1024
track_errors => Off => Off
xmlrpc_error_number => 0 => 0
xmlrpc_errors => Off => Off
intl.error_level => 0 => 0
xdebug.force_display_errors => Off => Off
xdebug.force_error_reporting => 0 => 0
xdebug.show_error_trace => Off => Off
xdebug.start_upon_error => default => default

Однако, если я сделаю это: php -d error_reporting=22527 -d display_errors=off "C:\Users\david\Documents\PHP_CodeSniffer\bin\\phpcs" --version

Я получаю ошибки:

PHP PHP_CodeSniffer\Exceptions\DeepExitException:  PHP_CodeSniffer version 3.7.2 (stable) by Squiz (http://www.squiz.net)
 in C:\Users\david\Documents\PHP_CodeSniffer\src\Config.php on line 713
PHP Stack trace:
PHP   1. {main}() C:\Users\david\Documents\PHP_CodeSniffer\bin\phpcs:0
PHP   2. PHP_CodeSniffer\Runner->runPHPCS() C:\Users\david\Documents\PHP_CodeSniffer\bin\phpcs:18
PHP   3. PHP_CodeSniffer\Config->__construct($cliArgs = *uninitialized*, $dieOnUnknownArg = *uninitialized*) C:\Users\david\Documents\PHP_CodeSniffer\src\Runner.php:67
PHP   4. PHP_CodeSniffer\Config->setCommandLineValues($args = [0 => '--version']) C:\Users\david\Documents\PHP_CodeSniffer\src\Config.php:342
PHP   5. PHP_CodeSniffer\Config->processLongArgument($arg = 'version', $pos = 0) C:\Users\david\Documents\PHP_CodeSniffer\src\Config.php:441
PHP_CodeSniffer version 3.7.2 (stable) by Squiz (http://www.squiz.net)

Можете ли вы назвать плагин VSCode? Может быть способ переопределить настройку при запуске команды, например. с помощью php -d display_errors=off в команде CLI.

IMSoP 02.02.2023 14:05

@IMSoP Я могу указать исполняемый файл на phpcs.bat файл и установить -d display_errors=off там, но все равно получаю ошибки. Также у меня уже есть display_errors = Off on php.ini, я обновлю свой пост.

Daviid 02.02.2023 14:18

@RiggsFolly Это уже рассмотрено в вопросе: «Я знаю, что могу просто исправить xdebug.trace_output_dir, но в будущем появится что-то еще». Вопрос в том, как остановить сообщения в целом от взлома плагина, а не это конкретное сообщение об устаревании.

IMSoP 02.02.2023 15:04
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
75
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Первая проблема была решена с помощью -d error_reporting=22527 -d display_errors=off

Вторая проблема была решена с помощью -d xdebug.show_exception_trace=0

Другие вопросы по теме