Вы также можете использовать абсолютное позиционирование ...
.required {
display: inline-block;
position: relative;
}
.required label:after {
content:"*";
display: block;
position: absolute;
right: -.6em;
top: 0;
}
В fiddle Я включаю возможность поместить «*» после ввода или после метки.
Для синтаксических ошибок вам нужно включить отображение ошибок в php.ini. По умолчанию они отключены, потому что вы не хотите, чтобы «клиент» видел сообщения об ошибках. Проверьте эту страницу в документации PHP для информации по двум директивам: error_reporting
и display_errors
. display_errors
, вероятно, тот, который вы хотите изменить. Если вы не можете изменить php.ini, вы также можете добавить следующие строки в файл .htaccess:
php_flag display_errors on
php_value error_reporting 2039
Возможно, вам захочется использовать значение E_ALL (как упоминалось Gumbo) для вашей версии PHP для error_reporting
, чтобы получить все ошибки. Дополнительная информация
3 других элемента: (1) Вы можете проверить файл журнала ошибок, поскольку он будет иметь все ошибки (кроме случаев, когда ведение журнала отключено). (2) Добавление следующих двух строк поможет вам отлаживать ошибки, которые не являются синтаксическими ошибками:
error_reporting(-1);
ini_set('display_errors', 'On');
(3) Другой вариант - использовать редактор, который проверяет наличие ошибок при вводе, например PhpEd . PhpEd также поставляется с отладчиком, который может предоставить более подробную информацию. (Отладчик PhpEd очень похож на xdebug и интегрируется непосредственно в редактор, поэтому вы используете 1 программу для выполнения всего.)
Ссылка Cartman также очень хороша: http : //www.ibm.com/developerworks/library/os-debug/
error_reporting(E_ALL | E_STRICT);
И включите ошибки отображения в php.ini
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
Вы можете включить полную отчетность об ошибках (включая уведомления и строгие сообщения). Некоторые люди считают это слишком многословным, но это стоит попробовать. Установите error_reporting
на E_ALL | E_STRICT
в вашем php.ini.
error_reporting = E_ALL | E_STRICT
E_STRICT
уведомит вас об устаревших функциях и даст вам рекомендации о лучших методах выполнения определенных задач.
Если вы не хотите получать уведомления, но вы найдете другие типы сообщений полезными, попробуйте исключить уведомления:
error_reporting = (E_ALL | E_STRICT) & ~E_NOTICE
Также убедитесь, что display_errors
включен в php.ini. Если ваша версия PHP старше 5.2.4, установите ее в On
:
display_errors = "On"
Если ваша версия 5.2.4 или новее, используйте:
display_errors = "stderr"
Две ключевые строки, необходимые для получения полезных ошибок из PHP:
ini_set('display_errors',1);
error_reporting(E_ALL);
Как указывали другие участники, они по умолчанию отключены по соображениям безопасности. Как полезный совет - когда вы настраиваете свой сайт, удобно использовать переключатель для разных сред, чтобы эти ошибки были включены по умолчанию в вашей локальной среде и средах разработки. Это может быть достигнуто с помощью следующего кода (в идеале, в вашем файле index.php или config, так что он активен с самого начала):
switch($_SERVER['SERVER_NAME'])
{
// local
case 'yourdomain.dev':
// dev
case 'dev.yourdomain.com':
ini_set('display_errors',1);
error_reporting(E_ALL);
break;
//live
case 'yourdomain.com':
//...
break;
}
2 записи в php.ini диктуют вывод ошибок:
В процессе производства display_errors
обычно устанавливается на Off
(что хорошо, потому что отображение ошибок на производственных площадках обычно нежелательно!).
Однако в разработке он должен быть установлен на On
, чтобы отображались ошибки. Check!
error_reporting
(начиная с PHP 5.3) устанавливается по умолчанию на E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
(что означает, что все отображается за исключением уведомлений, строгих стандартов и уведомлений об отказе). Если вы сомневаетесь, установите его на E_ALL
, чтобы отобразить все ошибки. Проверьте!
Это позор. Обычно общие хосты не позволяют изменять файл php.ini, и поэтому этот параметр, к сожалению, недоступен. Но не бойся! У нас есть другие возможности!
В желаемом скрипте мы можем изменить записи php.ini во время выполнения! Значит, он будет запускаться при запуске скрипта! Sweet!
error_reporting(E_ALL);
ini_set("display_errors", "On");
Эти две строки будут делать тот же эффект, что и изменение записей php.ini, как указано выше!
Это означает, что сценарий даже не запускался! Это обычно происходит, когда у вас есть синтаксическая ошибка!
С синтаксическими ошибками скрипт даже не доходит до времени выполнения. Он не работает во время компиляции, то есть он будет использовать значения в php.ini, которые, если вы не изменились, могут не разрешать отображение ошибок.
Кроме того, PHP по умолчанию регистрирует ошибки. На общем хостинге это может быть в выделенной папке или в той же папке, что и скрипт-нарушитель.
Если у вас есть доступ к php.ini, вы можете найти его под error_log
.
Чтобы включить полное сообщение об ошибках, добавьте это в свой скрипт:
error_reporting(E_ALL);
Это приводит к появлению даже минимальных предупреждений. И на всякий случай:
ini_set('display_errors', '1');
заставит отображать ошибки. Это должно быть отключено на рабочих серверах, но не при разработке.
Существует действительно полезное расширение, называемое « xdebug », что сделает ваши отчеты намного приятнее.
Для быстрого практического устранения неполадок, я обычно предлагаю здесь на SO:
error_reporting(~0); ini_set('display_errors', 1);
, который должен быть вставлен в начале сценария, который находится под устранением неполадок. Это не идеально, идеальным вариантом является то, что вы также включаете это в php.ini
и регистрируете ошибки в PHP, чтобы уловить синтаксис и ошибки при запуске.
В приведенных здесь настройках отображаются все ошибки, уведомления и предупреждения, в том числе строгие, независимо от того, какая версия PHP.
Следующие действия:
См. Также:
«ОШИБКИ» являются наиболее полезными для разработчиков, чтобы знать их ошибки и разрешать их, чтобы система работала идеально.
PHP предоставляет некоторые из лучших способов узнать разработчиков, почему и где их кусок кода получает ошибки, поэтому, зная эти ошибки, разработчики могут сделать свой код лучше во многих отношениях.
Лучшие способы записи следующих двух строк в верхней части скрипта для получения всех сообщений об ошибках:
error_reporting(E_ALL);
ini_set("display_errors", 1);
Другой способ использования инструментов отладчика, таких как xdebug в вашей среде IDE.
ini_set
является строкой.
– PeeHaa
4 September 2015 в 18:16
Помимо параметров error_reporting и display_errors ini, вы можете получить ошибки SYNTAX из файлов журнала вашего веб-сервера. Когда я занимаюсь разработкой PHP, я загружаю журналы своего веб-сервера системы разработки в свой редактор. Всякий раз, когда я проверяю страницу и получаю пустой экран, файл журнала устаревает, и мой редактор спрашивает, хочу ли я перезагрузить его. Когда я это делаю, я прыгаю на дно и появляется синтаксическая ошибка. Например:
[Sun Apr 19 19:09:11 2009] [error] [client 127.0.0.1] PHP Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in D:\\webroot\\test\\test.php on line 9
В верхней части страницы выберите параметр
error_reporting(E_ERROR | E_WARNING | E_PARSE);
Включение отчета об ошибках является правильным решением, однако оно, похоже, не вступает в силу в программе, которая включает его, но только в последующих программах.
Таким образом, я всегда создаю файл / (который я обычно называю «genwrap.php»), который имеет по существу тот же самый код, что и популярное решение здесь (т. е. включить отчет об ошибках), а также включает в себя страницу, которую я действительно хочу вызвать.
Есть два шага для реализации этой отладки:
One - создать genwrap.php и поместить в него этот код:
<?php
error_reporting(-1);
ini_set('display_errors', 'On');
include($_REQUEST['page']);
?>
Two - изменить ссылку на программу / страницу вы хотите отлаживать переход через genwrap.php,
Например: change:
$.ajax('dir/pgm.php?param=val').done(function(data) { /* ... */
to
$.ajax('dir/genwrap.php?page=pgm.php¶m=val').done(function(data) { /* ... */
Моя обычная проблема - это «маленькие, глупые» ошибки парсера, которые, к сожалению, не отображаются.
Однако, когда .PHP-файл содержит файл с ошибками парсера, они отображаются! Поэтому у меня возникла идея написать небольшой «сценарий-исполнитель», который запускается с именем файла с ошибкой в качестве аргумента, т. Е. example.com/sx.php?sc=buggy.php
Это уже спасло меня от большой головной боли, может быть, это будет полезно и для кого-то другого:)
sx.php
$sc = $_GET["sc"];
if ((!isset($_GET["sc"]) && empty($_GET["sc"]))) {
echo "Please select file to execute using ?sc= (you may omit the .PHP-extension)";
} else {
$sc = $_GET["sc"];
if (false==stripos('.php',$sc)) $sc.='.php'; // adjust this if your preferred extension is php5!
require($sc);
}
?>
http://todell.com/debug также может быть полезен. Вы можете увидеть ваши значения объектов или сбросить ошибки отладки позади сцены даже в режиме производства.
$_SERVER['REMOTE_HOST']
, чтобы проверить, является ли клиент, ну, вы.
– Jaap Haagmans
23 June 2014 в 12:50
Попробуйте этот справочный инструмент сообщения об ошибках PHP . Это очень хорошая визуальная ссылка и помогла мне понять механизм создания сложных ошибок.
Использовать Kint. Это комбинация команд отладки на стероидах. https://kint-php.github.io/kint/ Он очень похож на Nette Tracy
Чтобы сохранить это и сделать его confortale, вы можете отредактировать файл php.ini. Обычно он хранится в /etc/php.ini
или /etc/php/php.ini
, но более локальные php.ini
могут перезаписать его, в зависимости от рекомендаций по настройке вашего хостинг-провайдера. Проверьте файл phpinfo()
для Loaded Configuration File
вверху, чтобы убедиться, что последний загружается последним.
Искать display_errors в этом файле. Должно быть только 3 экземпляра, из которых 2 комментируются.
Измените строку без комментирования на:
display_errors = stdout
Вы можете зарегистрировать свой собственный обработчик ошибок в PHP. Например, сброс всех ошибок в файл может помочь вам в этих неясных случаях. Обратите внимание, что ваша функция будет вызвана, независимо от того, какой ваш текущий error_reporting установлен. Очень простой пример:
function dump_error_to_file($errno, $errstr) {
file_put_contents('/tmp/php-errors', date('Y-m-d H:i:s - ') . $errstr, FILE_APPEND);
}
set_error_handler('dump_error_to_file');
Вы можете включить следующие строки в файл, который вы хотите отлаживать:
error_reporting(E_ALL);
ini_set('display_errors', '1');
Это переопределяет настройки по умолчанию в php.ini, которые просто заставляют PHP сообщать об ошибках в журнал.
, если вы пользователь ubuntu, затем перейдите к своему терминалу и запустите эту команду
sudo tail -50f /var/log/apache2/error.log
, где будут отображаться последние 50 ошибок. Существует файл ошибки error.log
для apache2, который регистрирует все ошибки.
Вы также можете попробовать PHPStorm в качестве редактора кода. Он найдет много PHP и других синтаксических ошибок, как вы набираете в редакторе.
В дополнение к очень многим превосходным ответам выше вы также можете реализовать следующие две функции в своих проектах. Они будут улавливать каждую несинтаксическую ошибку до выхода приложения / скрипта. Внутри функций вы можете делать обратную трассировку и регистрировать или отображать сообщение «Сайт под техническим обслуживанием».
Неустранимые ошибки:
register_shutdown_function
http: //php.net/manual/en/function.register-shutdown-function.php
Ошибки:
set_error_handler
http: // php .net / manual / en / function.set-error-handler.php
Backtracing:
debug_backtrace
E_ERROR | E_WARNING | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE
. См. docs.php.net/manual/en/errorfunc.constants.php – Gumbo 10 May 2009 в 18:59