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

Форум PHP

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

 

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

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

тема: Блок новости не работает на хосте.
 
 автор: helg66   (29.12.2008 в 16:49)   письмо автору
 
 

Добрый день. Скачал блок "Новости", поставил на Денвере , игрался типа 2 недели переделывал под себя, все работало. Решил поставить на хостинг и сразу все развалилось...не хочет картинка добавлятся на сервер. Загрузил на сервер чистый блок новостей(без исправлений), при включении загрузки картинки ругается что не может открыть поток. строка 84

if (copy($_FILES['filename']['tmp_name'], "../".$path))

при изменении "../" на /news/ выскакивает сообщение "Соединение закрыто удаленным сервером
Вы попытались получить доступ к адресу http://www.чччччч.ru/news/admin/addnews.php, который сейчас недоступен."

Списался с техподдержкой хостера...видел как они поигрались скриптом и ответили что ставили данный скрипт на другом хосте все работает. ищите говорят ошибку в тексте скрипта, а где ее найдешь если в денвере на локалке все пашет просто отлично...

Есть ли какие соображения как победить скрипт?

P.S. При чистом скрипте выдается сообщение:
"Warning: copy(../files/20081229165431.jpg) [function.copy]: failed to open stream: Permission denied in /usr/home/disel/domains/zoovd.ru/public_html/news1/admin/addnews.php on line 84"

Права на папку files ставил все какие возможно от 644 до 777

  Ответить  
 
 автор: OLi   (29.12.2008 в 17:18)   письмо автору
 
   для: helg66   (29.12.2008 в 16:49)
 

Возможно, в действительности что-то в коде не так, например, указание пути папок или инклуды неверны, такое часто забывается! Просмотрите код хорошо!
Можете здесь написать код, в котором выводит ошибки!

  Ответить  
 
 автор: helg66   (29.12.2008 в 17:22)   письмо автору
 
   для: OLi   (29.12.2008 в 17:18)
 

Вот обработчик формы...если новость без фото, все нормально создается, а с картинкой выдает ошибку....на локалке в денвере все работает нормально, хоть с картинкой хоть без...

<?php

// Выставляем уровень обработки ошибок (http://www.softtime.ru/info/articlephp.php?id_article=23)
Error_Reporting(E_ALL & ~E_NOTICE);

// Устнавливаем соединение с базой данных
include "../config.php";

// Проверим - достаточно ли информации для занесения в базу данных
if(empty($_POST['name'])) links("Отсутствует заголовок");
if(empty($_POST['body'])) links("Содержание не введено");
if(empty($_POST['url_text']) && !empty($_POST['url'])) $_POST['url_text'] = $_POST['url'];
// Определяем, скрыта новоть или нет
if($_POST['hide'] == "on") $showhide = "show";
else $showhide = "hide";
// Добавляем протокол в url, если пользователь забыл это сделать сам
$_POST['url'] = strtr($_POST['url'], "HTTP", "http");
if (!empty($_POST['url'])) {
if (strtolower((substr($_POST['url'], 0, 7))!="http://") && (strtolower(substr($_POST['url'], 0, 7))!="ftp://")) $url="http://".$_POST['url'];
}
// Проверяем время
if(!preg_match("|^[\d]+$|",$_POST['date_year'])) puterror("Ошибка при обращении к блоку новостей");
if(!preg_match("|^[\d]+$|",$_POST['date_month'])) puterror("Ошибка при обращении к блоку новостей");
if(!preg_match("|^[\d]+$|",$_POST['date_day'])) puterror("Ошибка при обращении к блоку новостей");
if(!preg_match("|^[\d]+$|",$_POST['date_hour'])) puterror("Ошибка при обращении к блоку новостей");
if(!preg_match("|^[\d]+$|",$_POST['date_minute'])) puterror("Ошибка при обращении к блоку новостей");

// Заменяем одинарные кавычки обратными, чтобы избежать конфликта
// при добавлении информации в таблицу
if (!get_magic_quotes_gpc())
{
$_POST['name'] = mysql_escape_string($_POST['name']);
$_POST['body'] = mysql_escape_string($_POST['body']);
}

// Если поле выбора картинки не пустое - закачиваем её на сервер
$path = "";
// Если требуется загрузить файл - загружаем
if($_POST['chk_filename'] == "on")
{
if (!empty($_FILES['filename']['tmp_name']))
{
// Формируем путь к файлу
$path = "files/".date("YmdHis",time());
// Если оператор пожелал переименовать файл - переименовываем
if($_POST['chk_rename'] == "on")
{
// Проверяем, чтобы не было прямых и обратных слешей
$_POST['rename'] = str_replace("\\","",$_POST['rename']);
$_POST['rename'] = str_replace("/","",$_POST['rename']);
$_POST['rename'] = stripcslashes($_POST['rename']);
$path = "files/".substr($_POST['rename'], 0, strrpos($_POST['rename'], "."));
}

// Проверяем, не является ли файл скриптом PHP или Perl, html, если это так преобразуем его в формат .txt
$extentions = array("#\.php#is",
"#\.phtml#is",
"#\.php3#is",
"#\.html#is",
"#\.htm#is",
"#\.hta#is",
"#\.pl#is",
"#\.xml#is",
"#\.inc#is",
"#\.shtml#is",
"#\.xht#is",
"#\.xhtml#is");
// Извлекаем из имени файла расширение
$ext = strrchr($_FILES['filename']['name'], ".");
$add = $ext;
foreach($extentions AS $exten)
{
if(preg_match($exten, $ext)) $add = ".txt";
}
$path .= $add;

// Перемещаем файл из временной директории сервера в
// директорию /files Web-приложения
if (copy($_FILES['filename']['tmp_name'], "../".$path))
{
// Уничтожаем файл во временной директории
@unlink($_FILES['filename']['tmp_name']);
// Изменяем права доступа к файлу
@chmod("../".$path, 0644);
}
}
else links("Не указан файл для загрузки");
}

// Формируем и выполняем SQL-запрос на добавление новости
$query = "INSERT INTO news VALUES (0,
'".$_POST['name']."',
'".$_POST['body']."',
'".$_POST['date_year']."-".$_POST['date_month']."-".$_POST['date_day']." ".sprintf("%02d",$_POST['date_hour']).":".sprintf("%02d",$_POST['date_minute']).":00',
'".$_POST['url']."',
'".$_POST['url_text']."',
'$path',
'$showhide');";
if(mysql_query($query)) header("Location: index.php?page=".$_GET['page']);
else links("Ошибка при добавлении новостной позиции");

// Вспомогательная функция для вывода ссылок возврата
function links($msg)
{
echo "<p>".$msg."</p>";
echo "<p><a href=# onClick='history.back()'>Вернуться к правке новостей</a></p>";
echo "<p><a href=index.php>Администрирование новостей</a></p>";
exit();
}
?>

  Ответить  
 
 автор: xx77   (29.12.2008 в 17:22)   письмо автору
 
   для: helg66   (29.12.2008 в 16:49)
 

Дело похоже в правах доступа на папку ../files
или в том что на хостинге включён safe_mode

Установлен-ли chmod 0777 на папку files ?

// перечитал,) видимо установлен

посмотрите в phpinfo насчёт safe_mode

  Ответить  
 
 автор: helg66   (29.12.2008 в 17:26)   письмо автору
 
   для: xx77   (29.12.2008 в 17:22)
 

права на папку стоят 777

safe-mod действительно наверное включен...как то на этот же хост не смог поставить интернет-магазин...а можно его как нибудь отключить?

  Ответить  
 
 автор: xx77   (29.12.2008 в 17:53)   письмо автору
 
   для: helg66   (29.12.2008 в 17:26)
 

Часто и нельзя выключить safe_mode без помощи хостеров

, если только попробовать строку
php_flag safe_mode off
в htaccess,

или остаётся только изменить скрипты так чтобы папка files лежала в одной дирректории с ними.

но посмотрите сначала в phpinfo() и спросите у хостеров

  Ответить  
 
 автор: helg66   (29.12.2008 в 18:00)   письмо автору
 
   для: xx77   (29.12.2008 в 17:53)
 

изменил htaccess и сразу картинка залезла в папку files....

вот такие у нас хостеры....типа ошибка в скрипте, ищите сами...

спасибо за помощь...

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

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