У меня проблема с date() и gmdate()! Выдает ошибку: Пишу так: Код (Text): InitDB(); $params['date'] = date('Y-m-d H:i:s'); Если же так: Код (Text): $params['date'] = date('Y-m-d H:i:s'); InitDB(); То ошибки нет! Но мне нужен именно первый вариант! InitDB(): PHP: <? function InitDB() { include_once "../config.php"; $dbcnx = @mysql_connect($dbhost, $dbuser, $dbpasswd); if (!$dbcnx) { DBErrorPage('В настоящий момент сервер БД не доступен.'); } elseif (!@mysql_select_db($dbname, $dbcnx)) { DBErrorPage('В настоящий момент БД не доступна.'); } elseif (!mysql_query("SET NAMES 'utf8'")) { DBErrorPage('Ошибка установки связи с БД в UTF8.'); }; } ?> Думаю проблему нужно искать в config.php config.php PHP: <?php setlocale(LC_ALL, "ru", "ru_RU"); error_reporting(E_ALL|E_STRICT); mb_internal_encoding("UTF-8"); $dbhost = 'localhost'; $dbuser ='root'; $dbpasswd = ''; $dbname = 'my'; ?> Помогите, в чем проблема?
А напиши это код так: PHP: <? $loc_ru=setlocale(LC_ALL, "ru", "ru_RU"); echo "На этой системе локаль имеет имя '$loc_ru'"; ?> и отпишись сюда - что она тебе скажет.
вот: Мне бы так что бы это работало не только на моем компе ну и у хостера, подскажите в чем проблема, что мне следует изучить?
1) А что у тебя за винда и что в настройках локали стоит? 2) Ты проверял - у хостера работает или тоже ругается? 3) Функцию DBErrorPage покажи.
Вот такой код уже выдает ошибку: PHP: <? error_reporting(E_ALL|E_STRICT); echo date('Y-m-d H:i:s'); ?> Ошибка: Код (Text): Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Helsinki' for '2.0/no DST' instead in Y:\home\temp\www\admin\temp\t.php on line 3
описание date_default_timezone_set() на нашел, что я делаю не так? использую setlocale() с параметром LC_ALL. Что еще нада? У меня же вообще дата по шаблону 'Y-m-d H:i:s' должна выводится, в чем тогда проблема, зачем еще какие-то настройки?
блин почему так: Код (Text): InitDB(); $params['date'] = date('Y-m-d H:i:s'); есть эта ошибка, а так нет: Код (Text): $params['date'] = date('Y-m-d H:i:s'); InitDB();
RomanBush У меня XP русская, у хостера не проверял. DBErrorPage: PHP: <?php $time_start = microtime(1); set_magic_quotes_runtime(0); function PrintPage($title, $body, $refresh = false) { header("Content-Type: text/html; charset=utf-8"); header("Cache-Control: no-cache"); header("Pragma: no-cache"); header("Cache-Control: private, pre-check=0, post-check=0, max-age=0"); if ($refresh) { header("Refresh: 3; URL=index.php"); } echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'; echo '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru" dir="ltr">'; echo '<head>'; echo '<title>'.$title.'</title>'; echo '<link href="main.css" rel="stylesheet" type="text/css" /></head><body>'; echo '<div class="header">'; echo '<a href="index.php">На главную</a>'; if ($refresh) { echo ' <span class="note">(автоматически через 3 сек.)</span>'; } echo ' | <a href="page-add.php">Добавить новую</a>'; echo ' | <a href="autoincrementreset.php">AUTO_INC Reset</a>'; echo '</div>'; echo $body; $time_end = microtime(1); global $time_start; $time = $time_end - $time_start; echo '<p>Время генерации страницы: '.$time.' секунд</p>'; echo '</body>'; echo '</html>'; } function MessagePage($title, $msg, $refresh = false) { PrintPage($title, '<div class="Message">'.$msg.'</div>', $refresh); } // Функция для вывода странички с ошибкой function ErrorPage($msg) { MessagePage('Ошибка', '<p>'.$msg.'</p>'); exit(); } // Функция для вывода странички с ошибкой БД function DBErrorPage($msg) { MessagePage('Ошибка БД', '<p>'.$msg.'</p><p><b>Ошибка: '.mysql_error().'<b></p>'); exit(); } ?>
date_default_timezone_set('Europe/Moscow'); - это команда проблему решила Осталось не понятным почему ошибки нет до коннекта к БД, но если после то есть, но при этом в тестовом скрипте: <? error_reporting(E_ALL|E_STRICT); echo date('Y-m-d H:i:s'); ?> ошибка также вылазит?
цитата из справочника означает, что, начиная с версии РНР 5.1.0, где функции date/time были переписаны, каждый вызов date/time будет генерировать сообщение E_NOTICE если временная зона (timezone, или TZ) будет неверна (как я полагаю, и если она будет незадана), и/или сообщение E_STRICT если используются настройки системы или переменные окружения временной зоны (в последних четырёх словах я за свой перевод не ручаюсь). Короче говоря, нужно указывать временную зону. Её можно указать в php.ini директивой date.timezone, либо в каждом скрипте функцией date_default_timezone_set(). З.Ы. У меня теже ошибки выбивает, РНР 5.2.4.
RomanBush PHP: <? header("Content-Type: text/html; charset=windows-1251"); //date_default_timezone_set('Europe/Moscow'); error_reporting(E_ALL|E_STRICT); echo date('Y-m-d H:i:s'); ?> выдаёт ошибку PHP: <? header("Content-Type: text/html; charset=windows-1251"); date_default_timezone_set('Europe/Moscow'); error_reporting(E_ALL|E_STRICT); echo date('Y-m-d H:i:s'); ?> уже не выдаёт
1) Ты бы проверил скрипт - у тебя наверняка это не одно место, где ты пытаешься выводить в utf-8. Ты где-то ещё "играешь" кодировками и у апача крышу сносит - не знает, в чём ты таки будешь работать. 2) Посмотри у себя в винде, в "панели управления" -> "Язык и региональные стандарты" - что там у тебя стоит. Попробуй переключить везде на английский, "применить", перезагрузка, потом обратно на русский, "применить", перезагрузка и потом опять проверь. Возможно винда просто глючит. Я почему и спросил - у хостера ты проверял или нет? У хостера же не винда стоит.