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

Форум PHP

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

 

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

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

тема: скрипта выдает ошибку на хосте а в данвере нет
 
 автор: АнтонБ   (06.03.2008 в 14:26)   письмо автору
 
 

Добрый день не могу н как понять в чем ошибка скрипта
с

Warning: fopen(../news/temp/tmp/tem68.html) [function.fopen]: failed to open stream: No such file or directory in /home/bobrovav/public_html/stayin/news/editor/red.php on line 25

Warning: fwrite(): supplied argument is not a valid stream resource in /home/bobrovav/public_html/stayin/news/editor/red.php on line 26

Warning: fclose(): supplied argument is not a valid stream resource in /home/bobrovav/public_html/stayin/news/editor/red.php on line 27

Скрипт пытается создат и открыть на запись файл
на лкальном сервере(данвере) скрипт работает стабильно

привожу ниже пример проблемного участка


$query ="SELECT id, head_news_1, data, head_news_2, text_   FROM `$table_list` WHERE `id` = '$id_n'"; 
$result = mysql_query ($query) ;
$row = mysql_fetch_assoc($result) ;
extract($row); 

$dh = opendir ('../news/temp') ;
while ($file_dir = readdir ($dh)) {
@unlink ('../news/temp/'.$file_dir) ;
}
closedir($dh) ;

$fname = tempnam("", "tem");
//echo  "<br>../list/ing/".$fname. "<br>" ;
$fname = substr($fname, 1, -4);
//echo  "<br>".$fname. "<br>" ;


//echo '<br>'.$text_.'<br>' ;
//$text_ = $file_css . '  ' . $text_ ;
$ff = fopen ('../news/temp/'.$fname.'.html', 'w');
fwrite ($ff, $text_ );
fclose ($ff);

/*$ff = fopen ('../news/temp/tempp.html', 'w+');
fwrite ($ff, $text_ );
fclose ($ff);
$fname = 'tempp' ;
echo $text_ ;*/

....

<script language="javascript">
document.write ('<div id="Frm"><iframe src="<? print "../news/temp/".$fname.".html" ;  ?>" id="message" width="700" height="400"></iframe></div><textarea name="NMH" style="width:700px;height=398px;display:none"></textarea>')
frames.message.document.designMode = "On";
</script>


В /**/ приведена альтернативная часть кода
На локально сервере работает но браузер подставляет старую версию файла из кеша, а на хосте файл подставляется пустой

Убедительна просьба подсказать в чем дело.
антон

   
 
 автор: KirillKiev   (06.03.2008 в 14:31)   письмо автору
 
   для: АнтонБ   (06.03.2008 в 14:26)
 

посмотрите права на папку куда скрипт на сервере вытается писать файл

   
 
 автор: АнтонБ   (06.03.2008 в 14:35)   письмо автору
 
   для: KirillKiev   (06.03.2008 в 14:31)
 

права пробывал изменять, но результата почемуто нет
к том уже файл который я открываю на запись еще нет, он автоматически создается

права изменял как на исполняющий файл таки и на родительский

   
 
 автор: KirillKiev   (06.03.2008 в 14:37)   письмо автору
 
   для: АнтонБ   (06.03.2008 в 14:35)
 

на папку а не на файл

   
 
 автор: АнтонБ   (06.03.2008 в 14:42)   письмо автору
 
   для: KirillKiev   (06.03.2008 в 14:37)
 

выставил права на паку где создается файл 777
резульат тоже

   
 
 автор: KirillKiev   (06.03.2008 в 14:54)   письмо автору
 
   для: АнтонБ   (06.03.2008 в 14:42)
 

добавте в код там где
$ff = fopen ('../news/temp/'.$fname.'.html', 'w');
$ff = fopen ('../news/temp/'.$fname.'.html', 'w') or die('Не открываеться файл '.'../news/temp/'.$fname.'.html');
если будет сообщение - точно что то с путями не то или с правами и копать только здесь...

   
 
 автор: Thrasher   (06.03.2008 в 14:54)   письмо автору
 
   для: АнтонБ   (06.03.2008 в 14:42)
 

Проблема не в правах, в правильности пути.

   
 
 автор: KirillKiev   (06.03.2008 в 14:56)   письмо автору
 
   для: Thrasher   (06.03.2008 в 14:54)
 

Скорее всего да... :)

   
 
 автор: АнтонБ   (06.03.2008 в 15:07)   письмо автору
 
   для: KirillKiev   (06.03.2008 в 14:56)
 

ну подождите, скрипт стабильно работал в данвере и пути, значит, были нормальными
подставил и скрипт выдал Не открываеться файл


Создал в папке temp проверочный файл test.html
добавил перед строкой
$ff = fopen ('../news/temp/'.$fname.'.html', 'w') or die('Не открываеться файл '.'../news/temp/'.$fname.'.html');

строчку
include '../news/temp/test.html' ;


файл подлючился - значит пути здесь не причем ! Тогда в чем причина ?

   
 
 автор: AVS   (06.03.2008 в 15:34)   письмо автору
 
   для: АнтонБ   (06.03.2008 в 15:07)
 

Антон, все дело в путях к файлам. На сервере, управляемом платформой Unix или Linux (и некоторых других) файлы "Файл.html" и "файл.html" разные файлы. Все названия папок и файлов регистрозависимы.

   
 
 автор: АнтонБ   (06.03.2008 в 15:44)   письмо автору
 
   для: AVS   (06.03.2008 в 15:34)
 

все файлы и папки нижнем регистре

   
 
 автор: KirillKiev   (06.03.2008 в 15:36)   письмо автору
 
   для: АнтонБ   (06.03.2008 в 15:07)
 

Тогда только права на запись в данную директорию

   
 
 автор: mihdan   (06.03.2008 в 16:06)   письмо автору
 
   для: KirillKiev   (06.03.2008 в 15:36)
 

откуда берется $fname может стоит написать так (если метод гет)


<?
$fname 
$_GET['fname'];
?>

   
 
 автор: АнтонБ   (06.03.2008 в 22:36)   письмо автору
 
   для: mihdan   (06.03.2008 в 16:06)
 

Ура нашел в чем причина:
$fname = tempnam("", "tem"); 

функция преднозначена для создания уникальных файлов
в переменная $fname в данвере получается только имя файла
а на хостах еще присутствует путь до какойто папки, причем у разных хостов она разная
Вот так! :-)

   
Rambler's Top100
вверх

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