Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ошибка HTTP 500 от подключаемой функции
 
 автор: Kaje   (21.10.2012 в 23:08)   письмо автору
 
 

Добрый вечер. Такая ситуация. Делал сайт на заказ, на OpenServer все отлично, залил на тестовый сервер тоже всё отлично. Как только сайт залили на арендованный сервер, начались приколы, которые мне за мало опытностью не понятны.

Подключаю на страницу файл, содержащий две функции, преобразующие дату.

include_once("functions/data.php");


После подключения страница, на которой подключается файл напрочь не грузится. Выбивает Ошибка HTTP 500 (Internal Server Error)....

Как только комментирую подключение этого файла, снова всё работает на ура.

Вот содержание файла data.php

<?php
        
function birthday($value){
                
$montharray = array('01' => 'Января','02' => 'Февраля','03' => 'Марта','04' => 'Апреля','05' => 'Мая','06' => 'Июня','07' => 'Июля','08' => 'Августа','09' => 'Сентября','10' => 'Октября','11' => 'Ноября','12' => 'Декабря');
                
$time           explode(' ',$value);
                
$date $time[0];
                        
$dateconvert explode('-',$date);
                        
$year  $dateconvert[0];
                        
$month $montharray[$dateconvert[1]];
                        
$day   $dateconvert[2];
                
$time $time[1];
        return 
$day." ".$month." ".$year;
        } 
        
        function 
date_add($value){
                
$montharray = array('01' => 'Января','02' => 'Февраля','03' => 'Марта','04' => 'Апреля','05' => 'Мая','06' => 'Июня','07' => 'Июля','08' => 'Августа','09' => 'Сентября','10' => 'Октября','11' => 'Ноября','12' => 'Декабря');
                
$time           explode(' ',$value);
                
$date $time[0];
                        
$dateconvert explode('-',$date);
                        
$year  $dateconvert[0];
                        
$month $montharray[$dateconvert[1]];
                        
$day   $dateconvert[2];
                
$time $time[1];
        return 
$day." ".$month." ".$year" в ".$time;
        }  
?>


Уже все глаза проглядел, немогу понять в чем косяк, ведь на локальном и тестовом сервере работает отлично. Дайте совет где копнуть.

  Ответить  
 
 автор: confirm   (21.10.2012 в 23:20)   письмо автору
 
   для: Kaje   (21.10.2012 в 23:08)
 

500 Internal Server Error - любая внутренняя ошибка сервера, которая не входит в рамки остальных ошибок класса.
Может возникать из-за неверного синтаксиса в файле .htaccess, несоответствии прав на доступ, и т.д..

Но зачем эти функции вообще нужны? Разве нельзя это решать проще с помощью стандартных функций даты/времени?

  Ответить  
 
 автор: Kaje   (21.10.2012 в 23:26)   письмо автору
 
   для: confirm   (21.10.2012 в 23:20)
 

Требуется выводить пользователю дату из 2012-10-21 в виде 21 октября .
Стандартные средства позволяют только на английском выводить названия месяцев.
Поправьте если я ошибаюсь.

  Ответить  
 
 автор: confirm   (21.10.2012 в 23:29)   письмо автору
 
   для: Kaje   (21.10.2012 в 23:26)
 

Не правда, что стандартные средства только на английском, можно и на русском, если установить локаль.
А даже если и не получиться это, то проще date(нужное, strtotime(метка времени)), включая и вывод месяца из массива, чем то, что вы наворотили.

  Ответить  
 
 автор: Kaje   (22.10.2012 в 00:18)   письмо автору
 
   для: confirm   (21.10.2012 в 23:29)
 

с date(нужное, strtotime(метка времени)) долго мудрил и в итоге получились лишь англоязычные названия. После чего сделал вот такую функцию по деревенски.

Поставленную проблему решил, вставив функцию birthday прям в страницу, без подключений через include. Работает нормально все. Но вопрос остался. Почему же на третьем сервере не работало?

  Ответить  
 
 автор: confirm   (22.10.2012 в 00:27)   письмо автору
 
   для: Kaje   (22.10.2012 в 00:18)
 

Я не знаю почему у вас на третьем не работало, так как не цыганка и не гадаю, а причин может быть много. ) Проверьте логи, может что они вам объяснят.

Что касается невозможности получить месяц на русском, то date(нужное, strtotime(метка времени)) к этому отношения не имеет. Это я написал к тому, что данное выражение позволяет проверить корректность данных даты/времени (строки), получить необходимые фрагменты времени, включая номер месяца, по которому и получить из массива имя месяца. Это куда компактнее будет.

А месяц на русском, это strftime().

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования