php: "Notice: Use of undefined constant"
Хочу наехать на хостера, но они такие гады, что им надо что-то конкретное предъявлять.Хостер наконец-то включил вывод ошибок, и правильно сделал. У тебя кривой код, просто раньше это игнорировалось. На хостера наезжать не надо, надо наезжать на автора кода.
2) Может, достаточно как-то подправить скрипт, выдающий ошибку? Кавычки там где-нибудь проставить... не знаю, что надо делать.Тут же всё русским английским языком сказано. Первые две ошибки - не определена константа, ты должен её определить или, действительно, проставить кавычки, если имелась в виду не константа STAR, а строка "STAR".
Третья ошибка - не определена переменная, тебе надо её определить прежде чем использовать.
А в чём ошибка кода?
скрипт, выдающий ошибки, содержит
require_once( "const.php");
и потом ещё
$message = $app_status[$db->f(status)]['message'];
А в const.php содержится описание:
$app_status = array( APP_STATUS_NEW => array ( 'color'=>'#E2E2E2', 'message'=>'Заявка рассматривается'
APP_STATUS_APPROVE => array ( 'color'=>'#83FB6B', 'message'=>'Заявка одобрена' )
);
Что здесь неправильно, почему ошибка "Use of undefined constant APP_STATUS_NEW"?
$app_status = array( APP_STATUS_NEW => array ( 'color'=>'#E2E2E2', 'message'=>'Заявка рассматривается'Ну здесь они как ключи массива определены, а какого хера они в константах появляются? Либо ищи кусок кода, где они объявляются, либо там возможно какая-то макагня с register_globals=on раньше была, а теперь вырубили (и правильно)
APP_STATUS_APPROVE => array ( 'color'=>'#83FB6B', 'message'=>'Заявка одобрена' )
);
$message = $app_status[$db->f(status)]['message'];А что за status, это константа или строка такая?
$app_status = array( APP_STATUS_NEW => array ( 'color'=>'#E2E2E2', 'message'=>'Заявка рассматривается'Здесь и возникает ошибка. PHP пытается создать массив, у которого ключами будут значения соответствующих констант, а констант-то и нет.
APP_STATUS_APPROVE => array ( 'color'=>'#83FB6B', 'message'=>'Заявка одобрена' )
);
ПЫЩЬ
define('CONST_NAME',array(...
?
PHP пытается создать массив, у которого ключами будут значения соответствующих констант, а констант-то и нет.Я тоже так примерно подумал, и пробовал вместо APP_STATUS_NEW написать 'APP_STATUS_NEW', но ошибка, указывающая на конкретно это выражение, не исчезала.
Как правильно объявлять такой массив?
На пхп.нет в главе про массивы в примерах строковые ключи для элементов массива берутся в двойные кавычки. Это вообще имеет значение, двойные кавычки или простые? Вроде, насколько я помню, в данном конкретном случае это без разницы.
Я тоже так примерно подумал, и пробовал вместо APP_STATUS_NEW написать 'APP_STATUS_NEW', но ошибка, указывающая на конкретно это выражение, не исчезала.Изменённый код и текст ошибки в студию.
Может, ошибка выдавалась на вторую константу?
На пхп.нет в главе про массивы в примерах строковые ключи для элементов массива берутся в двойные кавычки. Это вообще имеет значение, двойные кавычки или простые?Ключ для элемента массива должен быть строкой или числом. Как задана эта строка, абсолютно пофигу - хоть это там написано в одиночных кавычках, хоть в двойных, хоть через heredoc, хоть как результат работы какой-то функции, хоть как значение переменной или константы или даже хоть "$name" (в двойных кавычках).
Вообще, такое ощущение, что ты даже и не пытался разобраться в синтаксисе языка, а просто откуда-то надёргал примеров и что-то из них склеил.
либо там возможно какая-то макагня с register_globals=on раньше была, а теперь вырубилиОт register_globals константы не появляются
Изменённый код и текст ошибки в студию.ХЗ. Дочитал до конца справку на пхп.нет - получается, ошибка должна была исчезнуть. Вечерком попробую ещё раз расставить кавычки, сейчас неохота юзеров смущать своими тестами.
Может, ошибка выдавалась на вторую константу?
Вообще, такое ощущение, что ты даже и не пытался разобраться в синтаксисе языка, а просто откуда-то надёргал примеров и что-то из них склеил.
Читай внимательнее первый пост. Я сам ничего не дёргал и ничего из них не склеил, поскольку я вообще на пхп не прогаю. У меня есть уже написанные другими людьми скрипты, а мне надо исправлять в них ошибки и делать так, чтобы это всё работало. Я почитал книжку, но довольно сложно изучить синтаксис языка, если на нём не пишешь, т.е. практики ну вообще нет.
Оставить комментарий
arturabramian
Предыстория: хостер по ходу чего-то намутил с sendmail, в результате php-скрипты на сайте, отправляющие письма функцией mail, перестали отправлять. Я наехал на хостера, они уже неделю "усиленно решают проблему, многое сделано, но пока не решили".Вот вчера один из скриптов, наколхоженный одним прогером по знакомству, начал выдавать вот такое:
и так вся страница вывода этого скрипта, в таких предупреждениях.
До этого было всё нормально. Я так подозреваю, что хостер что-то там намутил, и после этого вот такой результат работы скрипта. Другие скрипты (phpbb форум) вроде работают нормально, хотя может ещё какие косяки полезут.
Хочу наехать на хостера, но они такие гады, что им надо что-то конкретное предъявлять.
1) В чём может быть причина такой фигни? Я заметил, что хостер поменял php.ini (выключил safe_mod, прописал sendmail_from). Может ли выключение safe mod вызвать такие ошибки?
2) Может, достаточно как-то подправить скрипт, выдающий ошибку? Кавычки там где-нибудь проставить... не знаю, что надо делать.