2014-01-03 1 views
3

После недавнего обновления (для системы и mediawiki) моя Mediawiki в основном полностью пустая. База данных и все, кажется, не повреждены. После включения вывода отладки php я получаю следующее сообщение:Mediawiki жалуется на ограничение open_basedir. Как это решить?

Предупреждение: действует is_executable(): open_basedir. Файл (/ usr/bin/php) не входит в допустимые пути: (/ srv/http /:/home /:/tmp /:/usr/share/pear /:/usr/share/webapps /:/вар/Библиотека/MediaWiki /) в /usr/share/webapps/mediawiki/includes/Wiki.php на линии 655

Мой вопрос, как я могу идти о и решить эту проблему? Простое добавление/usr/bin/php к моему ограничению open_basedir() кажется довольно опасным.

+1

Казалось бы крайне глупо, что PHP пытается получить доступ к исполняемому файлу PHP. Я бы пошел проверить некоторые ошибки в вашем сервере и файлы Wiki, начиная с строки 655 Wiki.php, чтобы увидеть, что, черт возьми, он пытается там и почему. –

+0

Хм, вы запустили 'php maintenance/update.php' из cli после обновления? – Wrikken

+0

Запуск 'php maintenance/runJobs.php', чтобы очистить очередь заданий, и' php maintenance/update.php', чтобы следовать вашим советам, не изменило эту проблему для меня. – Nicolas

ответ

2

Похоже, что ошибка возникает в MediaWiki::doJobs(), которая пытается запустить отдельный PHP-процесс для асинхронного обращения с job queue в фоновом режиме. Чтобы исправить это, вы можете:

  • редактировать ваш php.ini добавить /usr/bin/php к разрешенным путям,

  • установить $wgJobRunRate = 0 в вашем LocalSettings.php отключить автоматическую работу обработки полностью, и запустить maintenance/runJobs.php через хрон вместо этого, или

  • установить $wgPhpCli, чтобы указать на какой-то файл, который разрешается при use_basedir, но это не исполняемая программа, которая должна вызвать is_executable() проверку т o терпит неудачу и вынуждают MediaWiki вернуться к синхронной обработке заданий.

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

При этом, если вы не хотите использовать первый вариант, объединение последних двух может быть самым безопасным и эффективным: выполнение фоновых заданий через cron выводит их из обычного пути обработки запросов, а при установке $wgPhpCli - фиктивное значение гарантирует, что MediaWiki не будет пытаться запускать фоновые PHP-процессы для любых других целей.

Смежные вопросы