Белые страницы через некоторое время.

Проблемы с установкой или работой phpBB 3.0.x? Получите помощь здесь!
С 1 января 2017 года phpBB Group прекращает поддержку phpBB версии 3.0.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.0 до 1 июля 2017 года.
Подробнее: Окончание поддержки phpBB 3.0.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
karmob
phpBB 1.0.0
Сообщения: 3
Зарегистрирован: 14.01.2009 18:22

Re: Белые страницы через некоторое время.

Сообщение karmob » 14.01.2009 19:16

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

Думаю в данном случае изначально подошли неправильно к решению или рассмотрению данной проблемы.
Проблема заключается не в том, форум не работает из-за настроек хостинга, а из-за проблемы связаной с изменениями в версии 3.0.4.
Данная проблема рассматривалась много раз и если поискать на офф форуме, она до сих пор полностью не устранена полностью.
Так вот суть проблемы - в новой версии были изменены параметры (функция) выставления прав. До этой версии права указывались как бы напрямую (т.е. задавались в конфигурации, как например:
WAS: @chmod($this->cache_dir . 'data_global.' . $phpEx, 0777);
NEW: @chmod($this->cache_dir . 'data_global.' . $phpEx, 0666);
И подобными образом.
В новой версии права задаются с помощью директив (флагов):
@define('CHMOD_ALL', 7);
@define('CHMOD_READ', 4);
@define('CHMOD_WRITE', 2);
@define('CHMOD_EXECUTE', 1);

Т.е. права определяются установкой флагов: CHMOD_READ + CHMOD_WRITE - получаем 6 и т.д.

Так вот в результате получилось так, что временные файлы стали создаваться с правами 620 (об этом указано в ошибке 39355).
Т.е. изначально стоят параметры CHMOD_READ+CHMOD_WRITE и CHMOD_WRITE = 620
Как указывал:
rxu писал(а):Почему наши хостеры так любят запускать php в режиме Apache Handler, а в США как правило используют режим CGI/FastCGI.Во втором случае подобных проблем не бывает в принципе.
в данной проблеме php работает именно как модуль (Apache Handler) - плюсы и минусы того или иного способа расписывать не буду - каждый склоняется к своему (но с опытом использования разных скриптов лично я пришел к выводу, что большинство из них требует, чтобы апатч работал именно как модуль, а не как cgi, и к сожаление таких случаев много).

Поискав на форуме решения - пробовал использовать все варианты (1,2,3,4 - указанные пользователем "Hatch")
Первый и второй вариант - никаких решений не дал вообще. Третий способ - это способ для версий ниже. 4-й способ не помог, т.к. изначально все было указанно верно.
Было найдено решение с модификацией файла /includes/acm/acm_file.php, в нем как я понял и определяются права доступа, соответствующие значения были изменены, в результате были получены права досутупа 660 (не составит проблем сделать и 770), но в любом случае последний 0 - определяет пользователя - вот в нем и проблема (до версии 3,0,4 - права выставлялись правильно на все файлы кеша, т.к. сам использую данный форум и до последнего обновления все работало нормально).

Далее - т.к. php работает как модуль Apache он запускается от отдельного пользователя, соответственно все файлы созданные скриптом создаются именно от этого пользователя. Все остальное же работает от пользователя аккаунта. В результате получается некоторая нестыковка прав доступа, данную проблему многие провайдеры решают по разному - у некоторых есть специальная опция в панели управления для сбрасывания прав, у некоторых запускается скрипт. В данном случае скрипт меняет только группу и пользователя на правильные, но не права доступа к файлу.
Далее по файлам - как известно права 660 означают - 6(владелец файла)6(група)0(все остальные пользователи), т.е. получается все другие пользователи - отличные от владельца и группы не имеют прав даже на чтение данного файла - что пренципиально не правильно (если я не правильно выразился поправьте пожалуйста).

Так вот решение данной проблемы нужно искать в новой функции задания прав доступа к файлам.

Так же, к сожалению до конца не понятно следующее - у некоторых других пользователей, которые обращались с данной проблемой на офф сайт - права к файлам выставлялись как 755 (и в основном решение проблемы для них) - права как я указывал можно исправить в файле acm_file.php. Но в данном случае файлы создаются с совсем другими правами 720 или 620 - возможно виноват какой-то модуль или какая-то модификация - установить это не удалось.


P.S. надеюсь выше сказанное приблизит к решению данной проблемы, а не зациклиться на том, что во всем и всегда виноват хостер, если у него настройки для какого-то скрипта не подходят - как вы выражаетесь проблема хостера, а не разработчика скрипта, который не учел данный параметр. В это время другой разработчки учел данный параметр и для него не нужно, чтобы он был активирован, т.к. это приносит много проблем - в этом случае кто виноват?
В любом случае кто виноват в данном случае разработчки или какие-то настроки на хостинге - выносить окончательного решения НЕ БУДУ! - Ваше право решать и у каждого свое мнение. Я только надеюсь, что суть проблемы будет понятна, найдена и решена, а не просто выяснение - кто, зачем и почему.

Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2181
Зарегистрирован: 16.12.2007 14:01
Откуда: Павлодар
Благодарил (а): 7 раз
Поблагодарили: 338 раз

Re: Белые страницы через некоторое время.

Сообщение nissin » 14.01.2009 22:09

Цитата моя. С cgi/fastcgi проблем ни разу не видел (да и не должно быть), возможно всё дело в настройках.
Проблема возникает из-за того что хостер по ночам запускает скрипт меняющий группу и владельца файлов.
Нужно же менять только владельца, если вообще есть необходимость менять.
666 на файлы это зло поскольку нарушает принципы построения прав доступа в unix системах.

Попробуйте сделать следующее. Откройте файл includes/functions.php
Найдите:

Код: Выделить всё

		case 'group':
			$result = @chmod($filename, ($owner << 6) + ($perms << 3) + (0 << 0));

			clearstatcache();

			if (!is_null($php) || ((!($perms & CHMOD_READ) || is_readable($filename)) && (!($perms & CHMOD_WRITE) || is_writable($filename))))
			{
				break;
			}

Замените на:

Код: Выделить всё

		case 'group':
			/*
			$result = @chmod($filename, ($owner << 6) + ($perms << 3) + (0 << 0));

			clearstatcache();

			if (!is_null($php) || ((!($perms & CHMOD_READ) || is_readable($filename)) && (!($perms & CHMOD_WRITE) || is_writable($filename))))
			{
				break;
			}
		*/

Результат отпишите.

Добавлено спустя 28 минут 10 секунд:
Возможно ещё понадобится (не уверен):
В файле includes/functions.php найти:

Код: Выделить всё

function phpbb_chmod($filename, $perms = CHMOD_READ)
{
	// Return if the file no longer exists.
Заменить:

Код: Выделить всё

function phpbb_chmod($filename, $perms = CHMOD_READ)
{
	$perms |= CHMOD_READ;
	// Return if the file no longer exists.
Всё повторяется. nurlan.info

karmob
phpBB 1.0.0
Сообщения: 3
Зарегистрирован: 14.01.2009 18:22

Re: Белые страницы через некоторое время.

Сообщение karmob » 18.01.2009 7:55

Здравствуйте еще раз, последовал Вашему совету и закомментировал соотствующую функцию.
Изначально права были 660 (после предыдущих попыток что-то исправить), после комментирования функции права стали 644 (т.е. последний 0 исчез), но и для группы права стали 4. Скорее всего двигаемся в верном направлении, но что-то не учли...
"nissin" - большое спасибо за понимание и помощь, извини за долгий ответ, к сожалению времени свободного мало и смог проверить только сейчас.

Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2181
Зарегистрирован: 16.12.2007 14:01
Откуда: Павлодар
Благодарил (а): 7 раз
Поблагодарили: 338 раз

Re: Белые страницы через некоторое время.

Сообщение nissin » 18.01.2009 15:48

Проверил ещё раз на новом форуме, права на файлы 666, как Вам было нужно.
Верните назад все "попытки исправить".
Всё повторяется. nurlan.info

karmob
phpBB 1.0.0
Сообщения: 3
Зарегистрирован: 14.01.2009 18:22

Re: Белые страницы через некоторое время.

Сообщение karmob » 24.01.2009 10:56

Рад приветствовать Вас! Большое спасибо за помощь, в результате отмены всех предыдущих модификаций - права наконец-то стали выставляться как нужно, возможно что-то еще там менял, точно уже не помню, права сейчас выставляются как 677, в любом случае теперь все работает нормально.
Выражаю ОГРОМНУЮ благодарность "nissin" За помощь и понимание :!:
Думаю у кого возникают подобные проблему найдут эту тему и восспользуются советами.


P.S. извините за поздний ответ, свободного времени к сожалению не так много...

Аватара пользователя
Борис Бердичевский
phpBB 3.0.0 RC1
Сообщения: 1457
Зарегистрирован: 31.12.2007 1:52
Откуда: Израиль, Беэр-Шева
Благодарил (а): 47 раз
Поблагодарили: 81 раз

Re: Белые страницы через некоторое время.

Сообщение Борис Бердичевский » 10.02.2009 12:47

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

Код: Выделить всё

includes/asm/asm_file.php

		if ($fp = @fopen($this->cache_dir . 'data_global.' . $phpEx, 'wb'))
		{
			@flock($fp, LOCK_EX);
			fwrite($fp, "<?php\n\$this->vars = " . var_export($this->vars, true) . ";\n\n\$this->var_expires = " . var_export($this->var_expires, true) . "\n?>");
			@flock($fp, LOCK_UN);
			fclose($fp);

			if (!function_exists('phpbb_chmod'))
			{
				global $phpbb_root_path;
				include($phpbb_root_path . 'includes/functions.' . $phpEx);
			}

			phpbb_chmod($this->cache_dir . 'data_global.' . $phpEx, CHMOD_WRITE);
		}
		else
		{
			// Now, this occurred how often? ... phew, just tell the user then...
			if (!@is_writable($this->cache_dir))
			{
				trigger_error($this->cache_dir . ' is NOT writable.', E_USER_ERROR);
			}

			trigger_error('Not able to open ' . $this->cache_dir . 'data_global.' . $phpEx, E_USER_ERROR);
		}
Дело у него в том, что создание файла по первому if в отрывке кода, всегда возвращает ошибку. Хотя файл создаётся. Таким образом, файл создаётся без пермишен. Ессно, постоянно вываливается ошибка
Fatal error: Not able to open ./cache/data_global.php in <....>includes/acm/acm_file.php on line 115
Что посоветуете?
Пермишен на все указанные в документации директории (включая cache) установлены в 777. Кэш очищали, data_global.php удаляли -- не помогает.
После нескольких лет общения здесь и техсопровождения форумов я наконец понял, что ничего не понимаю в phpBB!

Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2181
Зарегистрирован: 16.12.2007 14:01
Откуда: Павлодар
Благодарил (а): 7 раз
Поблагодарили: 338 раз

Re: Белые страницы через некоторое время.

Сообщение nissin » 10.02.2009 13:03

http://www.php.net/fopen
Если PHP решил, что filename указывает на локальный файл, тогда он попытается открыть поток к этому файлу. Файл должен быть доступен PHP, так что вам следует убедиться, что права доступа на файл разрешают это. Если вы включили безопасный режим или open_basedir, накладываются дальнейшие ограничения.

В общем случае нужно трясти хостера на предмет установленных ограничений.
Всё повторяется. nurlan.info

Аватара пользователя
Борис Бердичевский
phpBB 3.0.0 RC1
Сообщения: 1457
Зарегистрирован: 31.12.2007 1:52
Откуда: Израиль, Беэр-Шева
Благодарил (а): 47 раз
Поблагодарили: 81 раз

Re: Белые страницы через некоторое время.

Сообщение Борис Бердичевский » 10.02.2009 16:23

Вот как я это вылечил. Прежде всего, я был не прав в этом:
Дело у него в том, что создание файла по первому if в отрывке кода, всегда возвращает ошибку. Хотя файл создаётся.
Проблема на самом деле в простановке пермишен. И я счёл за меньшее из зол вернуть код, бывший до версии 3.0.4
Итак,

includes/asm/asm_file.php

Find

Код: Выделить всё

      if ($fp = @fopen($this->cache_dir . 'data_global.' . $phpEx, 'wb'))
      {
         @flock($fp, LOCK_EX);
         fwrite($fp, "<?php\n\$this->vars = " . var_export($this->vars, true) . ";\n\n\$this->var_expires = " . var_export($this->var_expires, true) . "\n?>");
         @flock($fp, LOCK_UN);
         fclose($fp);

         if (!function_exists('phpbb_chmod'))
         {
            global $phpbb_root_path;
            include($phpbb_root_path . 'includes/functions.' . $phpEx);
         }

         phpbb_chmod($this->cache_dir . 'data_global.' . $phpEx, CHMOD_WRITE);
      }
      else
      {
         // Now, this occurred how often? ... phew, just tell the user then...
         if (!@is_writable($this->cache_dir))
         {
            trigger_error($this->cache_dir . ' is NOT writable.', E_USER_ERROR);
         }

         trigger_error('Not able to open ' . $this->cache_dir . 'data_global.' . $phpEx, E_USER_ERROR);
      }
Replace TO

Код: Выделить всё

		if ($fp = @fopen($this->cache_dir . 'data_global.' . $phpEx, 'wb'))
		{
			@flock($fp, LOCK_EX);
			fwrite($fp, "<?php\n\$this->vars = " . var_export($this->vars, true) . ";\n\n\$this->var_expires = " . var_export($this->var_expires, true) . "\n?>");
			@flock($fp, LOCK_UN);
			fclose($fp);

			@chmod($this->cache_dir . 'data_global.' . $phpEx, 0666);
			/*
			if (!function_exists('phpbb_chmod'))
			{
				global $phpbb_root_path;
				include($phpbb_root_path . 'includes/functions.' . $phpEx);
			}

			phpbb_chmod($this->cache_dir . 'data_global.' . $phpEx, CHMOD_WRITE);
			*/
		}
		else
		{
			// Now, this occurred how often? ... phew, just tell the user then...
			if (!@is_writable($this->cache_dir))
			{
				trigger_error($this->cache_dir . ' is NOT writable.', E_USER_ERROR);
			}

			trigger_error('Not able to open ' . $this->cache_dir . 'data_global.' . $phpEx, E_USER_ERROR);
		}
После нескольких лет общения здесь и техсопровождения форумов я наконец понял, что ничего не понимаю в phpBB!

Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2181
Зарегистрирован: 16.12.2007 14:01
Откуда: Павлодар
Благодарил (а): 7 раз
Поблагодарили: 338 раз

Re: Белые страницы через некоторое время.

Сообщение nissin » 10.02.2009 18:06

Это практически то же самое, что написал немного выше.
http://www.phpbbguru.net/community/topi ... ml#p231346
Всё повторяется. nurlan.info

Виталий Алексеев
phpBB 1.0.0
Сообщения: 2
Зарегистрирован: 11.02.2009 13:59

Re: Белые страницы через некоторое время.

Сообщение Виталий Алексеев » 25.02.2009 18:57

К сожалению решение предложенное Борис Бердичевский не потмогло:(
Или возможно необходимо сделать что-то еще?
У меня Unix system, права на папку кэш я выставил 777.
Кто-то может помочь?
Интересно, если этот баг описан и на phpbb.com, когда его будут исправлять?

Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 14527
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 348 раз
Поблагодарили: 1556 раз

Re: Белые страницы через некоторое время.

Сообщение rxu » 26.02.2009 10:00

Виталий Алексеев писал(а):Кто-то может помочь?
Наверное, только хостер пока.
Изображение

daMMned
phpBB 1.0.0
Сообщения: 6
Зарегистрирован: 01.03.2009 7:44

Re: Белые страницы через некоторое время.

Сообщение daMMned » 01.03.2009 19:07

Awarapan
У меня тоже Hoster.kz, как решилась ваша проблема?

Аватара пользователя
Rayden
Former team member
Сообщения: 3739
Зарегистрирован: 27.06.2005 1:07
Поблагодарили: 44 раза

Re: Белые страницы через некоторое время.

Сообщение Rayden » 02.03.2009 14:15

daMMned
А что выдает поиск по конференции на "Hoster.kz"?
phpBB2 FAQ
phpBB3 FAQ

daMMned
phpBB 1.0.0
Сообщения: 6
Зарегистрирован: 01.03.2009 7:44

Re: Белые страницы через некоторое время.

Сообщение daMMned » 02.03.2009 16:53

В общем решилось способом Бориса Бердичевского (добавил одну строчку из его примеров в нужный файл), и установкой прав на папку Cache 755 (и подфайлов)
Незнаю, надолго ли, но пока пашет. Сейчас файлы кэша создаются с правами 644.

Виталий Алексеев
phpBB 1.0.0
Сообщения: 2
Зарегистрирован: 11.02.2009 13:59

Re: Белые страницы через некоторое время.

Сообщение Виталий Алексеев » 05.03.2009 18:22

Сделал, как написал nissin - заменил в файле includes/functions.php два абзаца.
Вроде заработало, но как только очишаю кэш в браузере, опять загружаются пустые страницы.
что делать? кто нибудь знает?
на папку кеш выставил права 777
Последний раз редактировалось Виталий Алексеев 05.03.2009 22:44, всего редактировалось 1 раз.

Вернуться в «Поддержка phpBB 3.0.х»