Попытка включить файлы за пределы корня документа (Plesk 10) - PullRequest
1 голос
/ 18 декабря 2011

Хорошо, я все перепробовал, это, пожалуй, самое лучшее место, я хочу сделать Document Root здесь httpdocs/[folder]/html, и у меня есть php-файлы, которые я хочу поставить выше корня (require '../[folder]/file.php'], но не иметь возможность доступа дальше, чем /var/www/vhosts/example.com/httpdocs. Я знаю, что меня ограничивают open_basedir, потому что значение все еще равно httpdocs/[folder]/html в phpinfo(), но я не могу изменить это локальное значение!

Это то, что я пробовал до сих пор: Я видел это - Как включить файл вне корня документа? - и создал 'vhost.conf', который все еще сидит в каталоге conf, перенастроил файл, перезапустил apache ... ничего. Это хороший пост, но он немного устарел.

Я отредактировал сам php.ini до open_basedir = '/var/www/vhosts/example.com/httpdocs, загрузил его обратно туда, где он был, перенастроен, перезапущен - ничего

Я вытащил 'httpd.conf', отредактировал его, добавив те же строки из другого файла conf (vhost.conf), вставил обратно - ничего, затем я попытался сделать то, что здесь говорит Godaddy - http://help.godaddy.com/article/1616 и добавил строку php_admin_value open_basedir none' to 'httpd.conf - тоже не повезло.

Сейчас 0435, и я едва могу держать глаза открытыми - этот сайт предполагается запустить завтра в 2000 году! Заранее спасибо всем, кто хочет / может читать и / или помочь.

Обновление: Спасибо за быстрый ответ, вот лучшие ответы, которые я могу вам дать:

Это выдает ошибку?

Да, я получаю ошибку сервера и через журнал ошибок сервера, а именно:

PHP Предупреждение: require () [function.require]: действует ограничение open_basedir. Файл (/ var / www / vhosts / [example.com] / httpdocs / [папка] / [папка, в которой существуют защищенные файлы php] / [file.php]) находится за пределами допустимого пути:

Так что я на 99,99% уверен, что это из-за ограничения open_basedir.

Вы уверены, что ваш веб-сервер установлен как владелец vhosts /?

Я почти уверен, я немного новичок в управлении серверами, и я не знаю точно, что это значит, но у меня есть виртуальный выделенный сервер через Godaddy, на котором запущен Parallels Plesk v10.3.1, я сделал вышеуказанный файл Переезд происходит через Shell SSH.

В Plesk я могу изменить «Корень документа» на любое значение ниже /var/www/vhosts/example.com, а Plesk изменит «open_basedir» на все, что я установил. Например, если я установил для корня документа значение «httpdocs» в Plesk, то «open_basedir» изменится на ту же папку, и все будет работать нормально. Проблема в том, что я не хочу публичного доступа ко всему в /httpdocs/[folder]

Моя цель - я хочу изменить 'root документа' на /httpdocs/[folder]/html и open_basedir на /httpdocs, но я не могу изменить это локальное значение в open_basedir по какой-то причине. Я хочу сделать это в целях безопасности, чтобы люди могли напрямую получать доступ только к неважным файлам php, но сам php я хочу дать больше доступа к папкам.

Вы пытаетесь включить использование относительных или абсолютных путей?

Мои пути в php-файле, которые я пытаюсь включить / требовать для файлов выше «корневой каталог документа», выглядят в точности так:

require '../[folder where secure php files exist]/file.php';

Если я правильно вас понимаю, я не использую весь путь к серверу.

1 Ответ

0 голосов
/ 18 декабря 2011

ОТВЕТ: (Это было изменено на ответ):

Очевидно, что в Plesk 10 программа Plesk устанавливает любой путь к корневому каталогу документа в open_basedirНО в Plesk 10 нет удобного способа изменить «open_basedir» !!!

Так что вместо того, чтобы немного взломать, вы должны сначала пойти сюда:

/ usr / local / psa / admin / conf / templates / default / service / php.php

Затем измените обе эти строки в файле (строки 11 и 29): echo "php_admin_value open_basedir {$OPT['dir']}/:/tmp/\n";

к этому: echo "php_admin_value open_basedir /var/www/vhosts/[your.domain]/httpdocs/:/tmp/\n";

или к тому месту, где вы хотите, чтобы ограничение прекратилось.

Затем убедитесь, что ваш запуск этих строк SSH:

/ usr / local / psa / admin / sbin / httpdmng --reconfigure-all

/ etc / init.d / httpd stop

/ etc / init.d / httpd start

Но сейчас у меня новая проблема.Корень документа указывает на правильную папку:

/ var / www / vhosts / [my.domain] / httpdocs / [folder] / html

без каких-либо ошибок, однако, когда сервер получает: require '../[folder]/[file.php]';

Он пропускает его, как будто его даже нет!Не дает мне сообщение об ошибке или что-нибудь.Он также пропускает все мои встроенные css-файлы, js-файлы, изображения, видео ... его нет в любом каталоге!У меня такое ощущение, что это настройка php.ini или что-то странное, что делает Plesk.

Решено: Последняя проблема заключалась в том, что я никогда не работал с доступом к файлам выше root.PHP разрешено идти выше корня, но вы не можете сделать это: src="../img/imagefile.jpg"

в HTML.

Так что после реструктуризации всех файлов моего сайта мой сайт уже запущен и работает!Благодаря всему, что помогло, надеюсь, кому-то не придется делать это снова.Кроме того, я увидел сообщение, в котором Plesk обновляет это, потому что это большая проблема.Кто-то, кто работает на Parallels, сказал: http://forum.parallels.com/showthread.php?t=113236 это будет вариант в следующей версии, так что до этого времени настало время взломать !!

...