У меня к вам вопрос. Не могу понять почему перестал работать скрипт. Хотя до этого работал на сервере исправно целый год. И еще на локалке работает отлично. Мое предположение, что на сервере сменили версию PHP на 5.3.8. с 5.2.6. Если подскажите как исправить буду очень благодарен. Вот сам скрипт
<?php
//IP адрес голосовавшего
$dateIP = time();
if(empty($_SESSION['IPHost']))
{
/*if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){$host = gethostbyaddr($_SERVER['HTTP_X_FORWARDED_FOR']);}
else{$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);}
$host = getenv(HTTP_X_FORWARDED_FOR);*/
$_SESSION['IPHost'] = $_SERVER['REMOTE_ADDR'];
if(empty($_SESSION['IPHost'])){$_SESSION['IPHost'] = gethostbyaddr($_SERVER['REMOTE_ADDR']);}
}
//определение от куда сделан запрос
$pr = "";
if (!empty($level)){$pr = "../";}
$filename = $pr . "kurs.txt";
$read = $pr . "index/readFile.php";
$write = $pr . "index/writeFile.php";
if (!file_exists ($filename)){touch ($filename);}
//выборка записей
include ($read);
if ($len_tmp_massive > 0)
{
$_SESSION['USD'] = trim($tmp_massive[0]);
$_SESSION['EUR'] = trim($tmp_massive[1]);
$_SESSION['cbrDate'] = date ("d.m.Y", trim($tmp_massive[2]));
}
//определение времени последнего обновления
if (((date ("d", trim($tmp_massive[2])) != date ("d", time ())) and (date ("G", time ()) > 13)))
{
// Формируем дату для запроса
$date = date("d/m/Y", time ());
$address = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date";
//$address = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=12/11/2011";
//$address = "kursCode.txt";
$massive = file($address);
$len_massive = count ($massive);
if(empty($massive)){return;}
//запись нового курса
$x = 0;
$clean = "eulaV></LAUE";
for ($n = 0; $n < $len_massive; $n++)
{
$m = $n;
$str1 = $massive["$m"];
$m++;
$str2 = $massive["$m"];
$m++;
$m++;
$m++;
$str5 = trim($massive["$m"]);
if (strstr ($str1, "840") and strstr ($str2, "USD"))
{
$str5 = str_replace (",", ".", $str5);
$tmp_massive[0] = strtok ($str5, $clean) . "\n";
$n = $m;
$x++;
}
if (strstr ($str1, "978") and strstr ($str2, "EUR"))
{
$str5 = str_replace (",", ".", $str5);
$tmp_massive[1] = strtok ($str5, $clean) . "\n";
$n = $m;
$x++;
}
if ($x == 2)
{
$tmp_massive[2] = time () . "\n";
//запись в файл kurs.txt
$_SESSION['USD'] = $tmp_massive[0];
$_SESSION['EUR'] = $tmp_massive[1];
$_SESSION['cbrDate'] = date ("d.m.Y", trim($tmp_massive[2]));
$len_tmp_massive = 3;
include ($write);
break;
}
}
}
?>
С уважением.
Спустя 19 минут, 7 секунд (26.02.2012 - 17:58) walerus написал(а):
А ошибки то какие???
Спустя 15 минут, 37 секунд (26.02.2012 - 18:13) Guest написал(а):
Вот именно что ни каких, просто не записывает в файл kurs.txt это на сервере, а локалке все ОК.
Спустя 1 час, 45 минут, 43 секунды (26.02.2012 - 19:59) inpost написал(а):
Ради теста поставь права доступа на папку, где файл, и на сам файл: 777.
Кроме этого убедись, что ссылка на файл правильная и этот файл есть.
К тому же запись, скорее всего, у тебя идёт совершенно в другом файле.
Кроме этого убедись, что ссылка на файл правильная и этот файл есть.
К тому же запись, скорее всего, у тебя идёт совершенно в другом файле.
Спустя 20 часов, 8 минут, 14 секунд (27.02.2012 - 16:07) Guest написал(а):
Спасибо за совет. Я все перепроверил, ссылка правильная, если бы была не правильная, то в файле error_log появилась соответствующая запись. Совершенно верно запись идет в другом файле writeFile.php, но если бы был указан не тот путь в переменной $filename, то файл с таким названием появился бы в другой папке. И это не самое главное, вопрос в том, почему на локале все просто идеально, а сервере ни как. Вообще относительно скрипта сомнений нет работал отлично, пускай и не идеально написан, но факт остается фактом, а последние два месяца весь мозг мне вынес. И поэтому мысль движется в одном направлении, не из-за смены ли версии PHP?