PHP на Plesk - не вижу абсолютных каталогов - PullRequest
1 голос
/ 11 января 2010

У меня установлен PHP на веб-сервере, администрируемом Plesk. У меня проблемы с PHP include_path, которые я сузил до абсолютных путей, которые явно не работают.

Итак, если я попытаюсь составить список каталогов, сработает следующее:

echo "<h3>Directory listing of .</h3>";
foreach (new DirectoryIterator('.') as $fileInfo) {
    if($fileInfo->isDot()) continue;
    echo $fileInfo->getFilename() . "<br>\n";
};

Но это не дает вывода. (Там есть файлы).

echo "<h3>Directory listing of /var/www</h3>";
foreach (new DirectoryIterator('/var/www') as $fileInfo) {
    if($fileInfo->isDot()) continue;
    echo $fileInfo->getFilename() . "<br>\n";
};

Выход:

Directory listing of .
.htaccess
index.php
try.php

Directory listing of /var/www

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 11 января 2010

Если это настройка многосайтового сервера, это может быть нормальным поведением. Plesk (или какая-либо другая часть вашей системы) ограничит ваш экземпляр PHP вашим текущим сайтом и не позволит заглянуть в общий каталог var/www.

От какого пользователя работает ваш PHP? Имеет ли этот пользователь право доступа к / var / www?

1 голос
/ 03 февраля 2011

Plesk добавит такую ​​переменную в httpd.conf include:

php_admin_value open_basedir /var/www/vhosts/_web_domain_/httpdocs/:/tmp/

, поэтому вы не можете перечислить родительскую папку из ваших httpdocs блокировки и / tmp . Вы можете добавить вручную в свой конфигурационный файл, используя учетную запись root ssh.

Отредактируйте файл конфигурации httpd с вашего сайта в: / var / www / vhosts / _your_domain_ / config / . _httpd.include (Plesk 10 - это динамическое имя, которое изменяется с отметкой времени).

Там вы можете найти php_admin_value open_basedir и добавить папку, к которой вы хотите иметь доступ, используя: разделитель. Как:

php_admin_value open_basedir /var/www/vhosts/_web_domain_/httpdocs/:/tmp/:/var/www

Но если вы хотите добавить доступ к папке для всех ваших сайтов, например, к папке / usr / share / pear , вам нужно будет отредактировать файлы панели plesk.

Редактировать / usr / local / psa / admin / conf / templates / default / service / php.php , изменить с:

echo "php_admin_value open_basedir {$OPT['dir']}/:/tmp/\n";

Кому:

echo "php_admin_value open_basedir {$OPT['dir']}/:/usr/share/pear/:/tmp/\n";

Запоминание, которое даст доступ ко всем веб-сайтам в папке, может нарушить безопасность сервера. Делай на свой страх и риск. И помните, что если plesk обновится, ваши изменения будут удалены.

...