#php #linux #apache
#php #linux #apache
Вопрос:
Я переношу веб-сайты на новый сервер, и один сайт, который использует open_basedir на своих сайтах-доступный файл вызывает у меня проблемы и просто показывает пустую страницу, когда я пытаюсь ее загрузить.
Я исправил это, переместив конфигурацию open_basedir с виртуального хостинга Apache на передний план index.php страница в ini_set(). Это исправление беспокоит меня, и я чувствую, что чего-то не хватает. Есть ли какая-то конкретная настройка Apache, которую мне нужно изменить или что-то еще, чтобы заставить это работать в конфигурации VirtualHost?
Обратите внимание, что я перезапустил apache после изменения файла, доступного для сайтов.
Вот файл, доступный для сайтов:
<VirtualHost *:443>
ServerName www.mysite.com
ServerAdmin webmaster@mysite.com
DocumentRoot /var/www/www.mysite.com/content
php_flag open_basedir /var/www/www.mysite.com/
SSLEngine On
SSLCertificateFile /etc/ssl/certs/www_mysite_com.crt
SSLCertificateKeyFile /etc/ssl/private/www_mysite_com.key
SSLCACertificateFile /etc/ssl/certs/DigiCertCA.crt
RewriteEngine on
FileETag INode MTime Size
ExpiresActive On
ExpiresDefault "access plus 1 week"
ExpiresByType text/html "access plus 5 seconds"
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
Вот ошибка, которую выдает мне Apache (/var/log / apache2/error.log):
... PHP Warning: Unknown: open_basedir restriction in effect. File(/var/www/www.mysite.com/content/index.php) is not within the allowed path(s): (0) in Unknown on line 0
... PHP Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0
... PHP Fatal error: Unknown: Failed opening required '/var/www/www.mysite.com/content/index.php' (include_path='.:/usr/share/php:/usr/share/pear') in Unknown on line 0
Я даже попытался просто установить для базового каталога значение root (php_flag open_basedir /), и это все равно выдало мне ошибку.
Существующий сервер: Debian GNU / Linux 4.0, PHP версии 5.2.0-2, Apache 2.2.3
Новый сервер: Debian GNU / Linux 6.0, PHP версии 5.3.3-7 squeeze3, Apache 2.2.16
Комментарии:
1. Работает ли PHP как модуль Apache? В противном случае вы не сможете использовать
php_flag
директиву, которая предоставляетсяmod_php
.
Ответ №1:
Попробуйте вместо этого следующее:
<VirtualHost *:443>
...
php_admin_value open_basedir "/var/www/www.mysite.com/"
...
</VirtualHost>
Вы используете *_flag
там, где вы должны использовать *_value
.
*_flag
предназначен для логических значений, тогда как *_value
предназначен для строк. Смотрите Как изменить параметры конфигурации для получения дополнительной информации.
Комментарии:
1. Спасибо Treffynnon! Я сходил с ума!