Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> php - проблема записи в файл 
:(
    Опции темы
Vit
Дата 15.8.2008, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207



Дано: Windows 2003 Server, php 5, IIS

Проблема - при переносе сайта с линуха на винду перестала работать запись в текстовый файл (на сайте использовался скрипт для подсчёта пользователей, который хранит результаты в файле). Пути проверил и поправил... Всё равно не хочет. 


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Vasay
Дата 15.8.2008, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 1
Всего: 73



Vit, 

Пишет какую-нибудь ошибку?

Там кроме проблемы с путями могут быть проблемы с концом строки (у *nix и win формат разный).


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Vit
Дата 15.8.2008, 02:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207



Цитата(Vasay @  14.8.2008,  15:32 Найти цитируемый пост)
Vit, 

Пишет какую-нибудь ошибку?



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


Цитата(Vasay @  14.8.2008,  15:32 Найти цитируемый пост)
Там кроме проблемы с путями могут быть проблемы с концом строки (у *nix и win формат разный). 


хм... знать бы где конкретно это смотреть...

Вот сам скрипт который пишет в файл:  

Код

<?php
/* This file is part of BBClone (A PHP web counter on steroids)
 *
 * $Header: /cvs/bbclone/mark_page.php,v 1.93 2005/11/19 21:43:22 olliver Exp $
 *
 * Copyright (C) 2001-2005, the BBClone Team (see file doc/authors.txt
 * distributed with this library)
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * See doc/copying.txt for details
 */

if (!defined("_MARK_PAGE")) define("_MARK_PAGE", "1");
else return;

if ((!defined("_BBCLONE_DIR")) || (!is_readable(_BBCLONE_DIR."constants.php"))) return;
else require_once(_BBCLONE_DIR."constants.php");

if ((_BBC_PHP < 404) || !extension_loaded("pcre")) {
  exit("<hr /><b>Error:</b> Your PHP installation doesn't meet the minimum requirements for running BBClone.");
}

foreach (array($BBC_LIB_PATH."io.php", $BBC_LIB_PATH."marker.php", $BBC_CONFIG_FILE) as $i) {
  if (is_readable($i)) require_once($i);
  else {
    if (empty($BBC_DEBUG)) return;
    else exit(bbc_msg($i));
  }
}

// locking features
if (extension_loaded("sysvsem") && stristr("sem", $BBC_USE_LOCK)) define("_BBC_SEM", 1);
if (extension_loaded("dio") && stristr("dio", $BBC_USE_LOCK)) define("_BBC_DIO", 1);
if (!defined("_BBC_SEM") && !defined("_BBC_DIO") || stristr("flk", $BBC_USE_LOCK)) define("_BBC_FLK", 1);
// encoding features
if (extension_loaded("iconv")) define("_BBC_ICONV", 1);
if (extension_loaded("mbstring")) define("_BBC_MBSTRING", 1);
if (extension_loaded("recode")) define("_BBC_RECODE", 1);

if (!function_exists("flock") && (stristr("flk", $BBC_USE_LOCK) !== false)) {
  if (empty($BBC_DEBUG)) return;
  else exit(bbc_msg("", "l"));
}

if (!is_readable($BBC_CACHE_PATH)) {
  if (empty($BBC_DEBUG)) return;
  else exit(bbc_msg($BBC_CACHE_PATH));
}

ignore_user_abort(1);
        
// Don't write to counter files if we want to reset stats
if (empty($BBC_KILL_STATS)) {
  // needs to be always executed because otherwise our counter wouldn't work
  // any longer by the time $BBC_DEBUG was activated
  $i = bbc_exec_marker();
            
  // Don't process anything unless we are told to do so
  if (!defined("_OK")) {  
    if (empty($BBC_DEBUG)) return ignore_user_abort(0);
    else exit($i);
  }
  else !empty($BBC_DEBUG) ? print($i) : "";
}
         
foreach (array("ACCESS_FILE", "LAST_FILE", "LOCK") as $i) {
  if (!is_readable(${"BBC_".$i})) {
    if (empty($BBC_DEBUG)) return ignore_user_abort(0);
    else exit(bbc_msg(${"BBC_".$i}));
  }
  if (!is_writable(${"BBC_".$i})) {
    if (empty($BBC_DEBUG)) return ignore_user_abort(0);
    else exit(bbc_msg(${"BBC_".$i}, "w"));
  }
}
         
// Kill'em all if requested and return
if (!empty($BBC_KILL_STATS)) {
  bbc_kill_stats();

  if (empty($BBC_DEBUG)) return ignore_user_abort(0);
  else exit(bbc_msg("", "k"));
}
      
if (filesize($BBC_LOCK) !== 0) {
  ($BBC_TIMESTAMP - filemtime($BBC_LOCK) > 30) ? fclose(fopen($BBC_LOCK, "wb")) : "";
  return ignore_user_abort(0);
}
      
if ($BBC_TIMESTAMP <= filemtime($BBC_ACCESS_FILE)) return ignore_user_abort(0);

foreach (array($BBC_LOG_PROCESSOR, $BBC_LIB_PATH."new_connect.php", $BBC_LIB_PATH."timecalc.php",
               $BBC_LIB_PATH."referrer.php", $BBC_LIB_PATH."charconv.php") as $i) {
  if (!is_readable($i)) {
    if (empty($BBC_DEBUG)) return ignore_user_abort(0);
    else exit(bbc_msg($i));
  }
  else require_once($i);
}

foreach (array("browser", "os", "robot") as $i) {
  if (!is_readable($BBC_LIB_PATH.$i.".php")) {
    if (empty($BBC_DEBUG)) return ignore_user_abort(0);
    else exit(bbc_msg($BBC_LIB_PATH.$i.".php"));
  }
}
       
// write to lockfile
if (($a = bbc_get_lock($BBC_LOCK)) && bbc_write_data($a, "1")) {
  clearstatcache();
  require($BBC_ACCESS_FILE);
  require($BBC_LAST_FILE);

  // cleanup if requested
  if (!empty($BBC_PURGE_SINGLE)) bbc_purge_single();

  // reset ranking if it's set to "0"
  foreach (array("HOST" => "host", "KEY" => "key", "ORIGIN" => "referer", "PAGE" => "page") as $i => $j) {
    if (empty(${"BBC_MAX".$i}) && isset($access)) {
      $access[$j] = array();

      if (isset($last)) unset($last);
    }
  }

  if (isset($access)) {
    // updates
    if (isset($access['time']) && is_array($access['time'])) bbc_time_offset();
    if (!isset($access['bbc048b'])) bbc_update();
  }

  // global and time stats
  if (($b = bbc_get_lock($BBC_ACCESS_FILE)) && ($c = bbc_get_lock($BBC_LAST_FILE)) &&
      ($new_access = bbc_counter_to_array())) {
    bbc_add_new_connections($new_access);
    bbc_update_last();
    bbc_write_data($b, "<?php\n\$access =\n".bbc_array_to_str($access).";\n?>");
    bbc_write_data($c, "<?php\n\$last =\n".bbc_array_to_str($last).";\n?>");

    if (!empty($BBC_DEBUG)) print(bbc_msg(basename($BBC_ACCESS_FILE), "o"));
    if (!empty($BBC_DEBUG)) print(bbc_msg(basename($BBC_LAST_FILE), "o"));
  }
}
else (!empty($BBC_DEBUG) ? print(bbc_msg("", "l")) : "");

// once we've finished we unlock and truncate the lock file
fclose(fopen($BBC_LOCK, "wb"));
ignore_user_abort(0);

// Exit if debug mode is turned on.
if (!empty($BBC_DEBUG)) exit();
?> 


А вот его вызов со странички:

Код

<?php
define("_BBC_PAGE_NAME", "main");
define("_BBCLONE_DIR", "counter/");
define("COUNTER", _BBCLONE_DIR."mark_page.php");
if (is_readable(COUNTER)) include_once(COUNTER);
?>





--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Feldmarschall
Дата 15.8.2008, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



И зачем ты здесь нам здесь пишешь скрипт, который, по твоим словам, прекрасно работает (сам скрипт, а не связка скрипт+сервер).
Какой смысл копаться в коде скрипта, если проблема всервере - как ты сам же и говоришь.

Без сообщений об ошибке можно долго тыкать пальцем в небо. Ищи лог ошибок. Пинай администратора сервера.
ошибки ииса, по-моему, пишутся прямо в обший лог ошибок виндоус
PM   Вверх
Vit
Дата 15.8.2008, 14:23 (ссылка) |  (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207



Цитата(Feldmarschall @  14.8.2008,  23:41 Найти цитируемый пост)
И зачем ты здесь нам здесь пишешь скрипт, который, по твоим словам, прекрасно работает (сам скрипт, а не связка скрипт+сервер).
Какой смысл копаться в коде скрипта, если проблема всервере - как ты сам же и говоришь.


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

Цитата(Feldmarschall @  14.8.2008,  23:41 Найти цитируемый пост)
Пинай администратора сервера.


Я и есть администратор этого сервера

Цитата(Feldmarschall @  14.8.2008,  23:41 Найти цитируемый пост)
пишутся прямо в обший лог ошибок виндоус 


Нет в системных логах ничего. А в самом пхп нет никаких методов отлова ошибок?



--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 15.8.2008, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Vit, вставь в начало скрипта:

Код

ini_set( 'display_errors' , '1' );
error_reporting(E_ALL);

А потом копипасть сюда ошибки.
ПыСы, Что мешает Апач на винду поставить, коль ты администратор?
PM ICQ   Вверх
Vit
Дата 15.8.2008, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207



Цитата(Mal Hack @  15.8.2008,  08:03 Найти цитируемый пост)
ПыСы, Что мешает Апач на винду поставить, коль ты администратор? 



ничего не мешает... Дело в том что у меня там в основном .net и естественно что для него лучше подходит IIS, а на php работают лишь нсколько очень старых вещей типа счётчика посещений... Не уверен что из-за одного скрипта и пары сайтов надо геморроиться с портированием всего на Апач... а сам спинным мозгом чувствую, что установка Апач, его настройка, переброска на него 30 сайтов и до хрени скриптов на ASP.Net принесут несравненно больше проблем (в том числе в настоящее время неизвестных) и затрат времени чем исправление всего одной и уже известной проблемы.  Тем более что в принципе php то работает, и все скрипты работают за исключением одной функции.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 15.8.2008, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Vit, понятно, тогда вопрос о Апаче снят. Не рационально.
А что по поводу error_reporting   и т.д.? Пробовал?
Я у тебя вообще записи в файл не вижу как таковой...

PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0646 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.