размещение php скрипта вне корня сайта - PullRequest
4 голосов
/ 05 марта 2010

как бы я а) включил скрипт php, находящийся за пределами корневого веб-каталога (это будет просто простой файл ../file.php), б) опубликовал данные формы в скрипт php за пределами корневого веб-сайта. Я уверен, что это краеугольный камень безопасности php.

Ответы [ 3 ]

10 голосов
/ 05 марта 2010

, включая скрипт, находящийся вне webroot, очень просто: вы будете делать то же самое, что и для скрипта, который находится в webroot:

include '../myscript.php';
include '../library/myscript.php';
include dirname(__FILE__) . '/../library/myscript.php';

Тот, который вы предпочитаете ;-)
Я бы пошел за последним, лично, хотя.


Публикация в сценарии, находящемся вне webroot, невозможна: Apache не может обслуживать этот сценарий (Apache обслуживает только то, что находится внутри корневого каталога) .

Итак, к этому сценарию нельзя получить доступ через HTTP; это означает, что браузер не может получить к нему доступ.

Но если вы публикуете сценарий PHP, который находится внутри webroot, и этот сценарий включает в себя другой, который находится за пределами webroot, тогда код во втором файле будет выполнен как первый сценарий. Это означает, что у него будет доступ к данным $_POST - данным, напечатанным в форме.

7 голосов
/ 05 марта 2010

A) если ваш веб-корень - / www / myapp / public_html, тогда ваш public_html / index.php может включать скрипты вне веб-корня, выполнив

require '../includefolder/script.php"

B) Вы не можете публиковать данные непосредственно в сценарии вне корневого веб-каталога. Весь смысл в том, чтобы перемещать их туда, чтобы к ним не было прямого доступа; все должно передаваться им из ваших доступных скриптов, которые выставлены в вашем веб-корне.

3 голосов
/ 05 марта 2010
  1. Вот и все. Относительные пути.
  2. Если это связано с вашим предыдущим вопросом (вы включаете этот файл в), то суперглобальные значения, такие как $_POST, доступны во включаемых файлах без каких-либо дополнительных усилий
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...