Я переношу веб-сайты на новый сервер, и один сайт, который использует open_basedir в своих доступных файлах, дает мне проблемы и просто показывает пустую страницу, когда я пытаюсь ее загрузить.
Я исправил это, переместив конфигурацию open_basedir с Apache VirtualHost на переднюю страницу 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
Вместо этого попробуйте следующее:
<VirtualHost *:443> ... php_admin_value open_basedir "/var/www/www.mysite.com/" ... </VirtualHost>
Вы используете *_flag
где вы должны использовать *_value
.
*_flag
для булевых значений, тогда как *_value
для строк. Дополнительные сведения см. В разделе « Изменение параметров конфигурации» .