php 5.5 include(./cache/queue.php): failed to open stream: N

Проблемы с установкой или работой 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) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Profforg
phpBB 1.4.2
Сообщения: 51
Стаж: 13 лет 11 месяцев
Откуда: Москва
Благодарил (а): 1 раз

php 5.5 include(./cache/queue.php): failed to open stream: N

Сообщение Profforg »

После обновления php до 5.5 возникла проблема. При отправке личных сообщений, после отправки появляется такое:

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

[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions_messenger.php on line 882: include(./cache/queue.php): failed to open stream: No such file or directory
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions_messenger.php on line 882: include(): Failed opening './cache/queue.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear')
В конфиге phpbb дебаг ОТКЛЮЧЁН.

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

<?php
// phpBB 3.0.x auto-generated configuration file
// Do not change anything in this file!
$dbms = 'mysqli';
...
$table_prefix = 'phpbb_';
$acm_type = 'null';
// null
$load_extensions = '';

@define('PHPBB_INSTALLED', true);
//@define('DEBUG', true);
//@define('DEBUG_EXTRA', true);
?>
1. Как убрать эти сообщения, что они не показывались? Отключён же дебаг...

2. Можно ли это исправить / почему возникает?
Profforg
phpBB 1.4.2
Сообщения: 51
Стаж: 13 лет 11 месяцев
Откуда: Москва
Благодарил (а): 1 раз

Re: php 5.5 include(./cache/queue.php): failed to open strea

Сообщение Profforg »

При успешной отправке сообщений тоже самое.

Кто-нибудь сталкивался?

Делается не каждый раз. Такое ощущение, что по запуску крона или очереди (судя по queue.php).
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: php 5.5 include(./cache/queue.php): failed to open strea

Сообщение Sheer »

Какие права на папку /cache ?
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Profforg
phpBB 1.4.2
Сообщения: 51
Стаж: 13 лет 11 месяцев
Откуда: Москва
Благодарил (а): 1 раз

Re: php 5.5 include(./cache/queue.php): failed to open strea

Сообщение Profforg »

Sheer писал(а):Какие права на папку /cache ?
0777 (рекурсивно), как и на все остальные файлы

Файл queue.php в директории cache отсутствует. Но там есть пустой файл queue.php.lock
Аватара пользователя
MIT
Former team member
Сообщения: 2500
Стаж: 17 лет 6 месяцев
Откуда: 56°20′02″ с. ш. 36°42′45″ в. д.
Благодарил (а): 3 раза
Поблагодарили: 351 раз

Re: php 5.5 include(./cache/queue.php): failed to open strea

Сообщение MIT »

Profforg писал(а):есть пустой файл queue.php.lock
Удали его :)
Profforg
phpBB 1.4.2
Сообщения: 51
Стаж: 13 лет 11 месяцев
Откуда: Москва
Благодарил (а): 1 раз

Re: php 5.5 include(./cache/queue.php): failed to open strea

Сообщение Profforg »

MIT писал(а):Удали его
Он создался автоматически, значит создастся снова... Удалил. Проблема возникает в случайном порядке) Пока жду следующего появления. Кеш очищать пробывал, все синхронизации и т.д. пробывал, дебаг включал выключал.
Аватара пользователя
MIT
Former team member
Сообщения: 2500
Стаж: 17 лет 6 месяцев
Откуда: 56°20′02″ с. ш. 36°42′45″ в. д.
Благодарил (а): 3 раза
Поблагодарили: 351 раз

Re: php 5.5 include(./cache/queue.php): failed to open strea

Сообщение MIT »

Profforg писал(а):дебаг включал выключал
:mrgreen: А шо, обычно помогает?

Вообще, если ты посмотришь на строку кода, которая написана в ошибке, то там чуть выше есть проверка на существование этого файла:

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

	function save()
	{
		if (!sizeof($this->data))
		{
			return;
		}

		$lock_fp = $this->lock();

		if (file_exists($this->cache_file))
		{
			include($this->cache_file);

			foreach ($this->queue_data as $object => $data_ary)
			{
				if (isset($this->data[$object]) && sizeof($this->data[$object]))
				{
					$this->data[$object]['data'] = array_merge($data_ary['data'], $this->data[$object]['data']);
				}
				else
				{
					$this->data[$object]['data'] = $data_ary['data'];
				}
			}
		}
Странно, что у тебя строка

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

if (file_exists($this->cache_file))
пропускает внутрь условия.

У тебя функция save() выглядит так?
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: php 5.5 include(./cache/queue.php): failed to open strea

Сообщение Sheer »

MIT писал(а):Странно, что у тебя строка
Дык вот и я об этом думал... но что-то мне в голову не приходит, что там что-то не так.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
MIT
Former team member
Сообщения: 2500
Стаж: 17 лет 6 месяцев
Откуда: 56°20′02″ с. ш. 36°42′45″ в. д.
Благодарил (а): 3 раза
Поблагодарили: 351 раз

Re: php 5.5 include(./cache/queue.php): failed to open strea

Сообщение MIT »

Ну, такой косяк может быть, например, если намудрено что-то с путями работы/инклуда, если отправка личных сообщений происходит как-нибудь через Crontab со сбитой рабочей директорией...
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: php 5.5 include(./cache/queue.php): failed to open strea

Сообщение Sheer »

На офф-сайте такой вопрос всплывал, но внятного ответа не видел.

Добавлено спустя 2 минуты:
Re: php 5.5 include(./cache/queue.php): failed to open stream: N
https://www.phpbb.com/community/viewtop ... &t=1536195
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
c61
phpBB 2.0.6
Сообщения: 506
Стаж: 13 лет 9 месяцев
Благодарил (а): 42 раза
Поблагодарили: 251 раз

Re: php 5.5 include(./cache/queue.php): failed to open strea

Сообщение c61 »

Profforg, попробуйте в админке Общие->Средства связи->Настройки почты->Размер почтового пакета поставить 0 и посмотреть, что получится. Тем самым Вы избавитесь от очереди)

Этот вопрос всплывал на некоторых франко- и англоязычных конференциях, по оф. обращениям была дана такая рекомендация. О случайных проявлениях этого глюка можно найти обрывочные сведения на багтрекерах phpbb и сообщения, что всё это из-за странностей с очередями, и информацию, что в 3.1 будет сделано иначе.

P.S. Сообщите, пожалуйста, адресок конференции. Причины могут быть и другие...
Profforg
phpBB 1.4.2
Сообщения: 51
Стаж: 13 лет 11 месяцев
Откуда: Москва
Благодарил (а): 1 раз

Re: php 5.5 include(./cache/queue.php): failed to open strea

Сообщение Profforg »

MIT писал(а):Ну, такой косяк может быть, например, если намудрено что-то с путями работы/инклуда, если отправка личных сообщений происходит как-нибудь через Crontab со сбитой рабочей директорией...
Не менял пути работы/инклуда. Отправка личных сообщений происходит как было по стандарту в phpbb. cron не использую. Шаблон нестандартный, судя по всему в нём крон в нём вызывается вообще в overall_footer.html <!-- IF not S_IS_BOT -->{RUN_CRON_TASK}<!-- ENDIF -->
MIT писал(а):У тебя функция save() выглядит так?
includes/functions_messenger.php 868-907:

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

	/**
	* Save queue
	*/
	function save()
	{
		if (!sizeof($this->data))
		{
			return;
		}

		$lock_fp = $this->lock();

		if (file_exists($this->cache_file))
		{
			include($this->cache_file);

			foreach ($this->queue_data as $object => $data_ary)
			{
				if (isset($this->data[$object]) && sizeof($this->data[$object]))
				{
					$this->data[$object]['data'] = array_merge($data_ary['data'], $this->data[$object]['data']);
				}
				else
				{
					$this->data[$object]['data'] = $data_ary['data'];
				}
			}
		}

		if ($fp = @fopen($this->cache_file, 'w'))
		{
			fwrite($fp, "<?php\nif (!defined('IN_PHPBB')) exit;\n\$this->queue_data = unserialize(" . var_export(serialize($this->data), true) . ");\n\n?>");
			fclose($fp);

			phpbb_chmod($this->cache_file, CHMOD_READ | CHMOD_WRITE);
		}

		$this->unlock($lock_fp);
	}
Sheer писал(а):На офф-сайте такой вопрос всплывал, но внятного ответа не видел.
Не думаю, что это относится к моей проблеме. Эта проблема возникла при переходе с php 5.4 на php 5.5 (вышел 20 июня). А в этих темах говорится о старых версиях phpbb и старых версиях php. После миграции я сделал chmod 777 -R, поэтому вряд ли это относится к вопросам прав на файлы.

У меня есть несколько предположений:

1. Используется одна из запрещённых функций (но это очень вряд ли т.к. ошибка возникает редко):

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

disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,popen,exec,system,passthru,proc_open,shell_exec,show_source, system, shell_exec, passthru, exec, popen, proc_open,system,exec,curl_exec,curl_multi_exec,passthru,shell_exec,proc_open,popen,parse_ini_file,show_source,ini_restore,com_load_typelib,symlink,ini_get_all,popen.file,apache_child_terminate, apache_setenv, define_syslog_variables, escapeshellarg, escapeshellcmd, eval, exec, fp, fput, highlight_file, ini_alter, ini_get_all, ini_restore, inject_code, openlog, passthru, php_uname, phpAds_remoteInfo, phpAds_XmlRpc, phpAds_xmlrpcDecode, phpAds_xmlrpcEncode, popen, posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, posix_setuid, posix_uname, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, shell_exec, syslog, system, xmlrpc_entity_decode,exec,passthru,shell_exec,system,proc_open,popen,parse_ini_file,show_source,curl_multi_exec,apache_child_terminate, apache_setenv, define_syslog_variables, escapeshellarg, escapeshellcmd, eval, exec, fp, fput, highlight_file, ini_alter, ini_get_all, ini_restore, inject_code, openlog, passthru, php_uname, phpAds_remoteInfo, phpAds_XmlRpc, phpAds_xmlrpcDecode, phpAds_xmlrpcEncode, popen, posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, posix_setuid, posix_uname, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, shell_exec, syslog, system, system,proc_open, symlink, xmlrpc_entity_decode, popen, curl_exec, curl_multi_exec, parse_ini_file, show_source, get_cfg_var, diskfreespace, disk_free_space, disk_total_space, dl, escapeshellarg, escapeshellcmd, exec, highligh_file, link, passthru, popen, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, set_time_limit, shell_exec, show_source, symlink, system, tmpfile, tempnam, php_info, phpinfo
(тут есть повторения)
Возможно fp?
2. Баг в Zend OPcache
3. Возможно виновата тестовая настройка opcache.enable_file_override (Allow file existence override (file_exists, etc.) performance feature). Временно выставил её в 0.

P.S. queue.php.lock появился снова (за 24 часа точно появляется =)).
c61 писал(а):попробуйте в админке Общие->Средства связи->Настройки почты->Размер почтового пакета поставить 0 и посмотреть, что получится. Тем самым Вы избавитесь от очереди)
Это костыль... У меня личный сервер, поэтому меня больше волнует причина возникновения проблемы и её решение на глобальном уровне. Проблема не так часто возникает, чтобы её решать временно. Наоборот нужно её видеть.
c61 писал(а):P.S. Сообщите, пожалуйста, адресок конференции. Причины могут быть и другие...
Отправил в лс.
Аватара пользователя
Balamut
Former team member
Сообщения: 2214
Стаж: 21 год 6 месяцев
Откуда: {postrow.POSTER_FROM}
Поблагодарили: 146 раз

Re: php 5.5 include(./cache/queue.php): failed to open strea

Сообщение Balamut »

c61 писал(а):Этот вопрос всплывал на некоторых франко-
Скажу даже больше, у французской поддержки этот вопрос обсуждался гораздо более активно, чем на офф-сайте.
При всём моём нуле в французском языке, единственное, что они предположили, как я понял, - отсутствие места на хостинге.


Profforg, тут, пожалуй, прав MIT, потому что явное условие if (file_exists($this->cache_file)) не выполняется. Точнее, выполняется, а не должно.

Попробуйте поставить if (!file_exists( - удивитесь, что файл, таки, есть.
И файл этот, ятд, есть в /tmp, просто скрипт не там его ищет.
//
// That's all, Folks!
// -------------------------------------------------
Profforg
phpBB 1.4.2
Сообщения: 51
Стаж: 13 лет 11 месяцев
Откуда: Москва
Благодарил (а): 1 раз

Re: php 5.5 include(./cache/queue.php): failed to open strea

Сообщение Profforg »

Smayliks писал(а):Попробуйте поставить if (!file_exists( - удивитесь, что файл, таки, есть.
И файл этот, ятд, есть в /tmp, просто скрипт не там его ищет.
В /tmp или ./tmp?

Может быть тогда изменение include_path поможет?

Если виноват именно file_exists, то наверно всё таки изменением opcache.enable_file_override в 0 это решается.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17273
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 633 раза
Поблагодарили: 2413 раз

Re: php 5.5 include(./cache/queue.php): failed to open strea

Сообщение rxu »

Смотрим в мануал по функции:
Note: The results of this function are cached. See clearstatcache() for more details.
Есть сильное подозрение, что из-за кэширования результатов функция возвращает true какое-то время, когда queue.php уже отсутствует.

Можно проверть, добавив перед указанной проблемной стркой вызов типа: clearstatcache(true, $this->cache_file);
Изображение

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