php включает в html файлы-каталоги - PullRequest
2 голосов
/ 24 ноября 2008

Все ли файлы php должны быть в каталоге include или это просто организационное удобство? Могу ли я включить файлы из любого каталога, используя путь к этому каталогу? Должны ли HTML-файлы, содержащие php-файлы, иметь расширение php? Если так, я думаю, это означало бы, что все мои html-документы были бы php, если бы у всех них было меню, которое я планирую «включить». Это приемлемый протокол, чтобы каждый файл на вашем сайте был php файлом?

Поклон в скромном почтении ...

p.s. есть хорошая библия на эту тему?

Ответы [ 4 ]

7 голосов
/ 24 ноября 2008

Вам не нужно, чтобы ваш php включал где-либо, или у вас есть расширение файла ...

Вызов включает ('/ path / to / your / file / with / any / extension.extension'); следует включить его в виде файла php

Обычно безопаснее вызывать файлы с php-кодом с расширением php tho.

1 голос
/ 24 ноября 2008

Вы можете включать файлы из любого места на сервере (конечно, в зависимости от прав доступа к файлам и ограничений безопасности).

Использование каталога include помогает поддерживать порядок, но не является обязательным.

Если файл содержит код PHP, он должен быть сохранен как файл .php - в противном случае, если он вызывается напрямую, код не запустится. Это оставляет вам файл, который ведет себя по-разному в зависимости от того, как к нему обращаются, что, вероятно, не то, что вы хотели, и может представлять угрозу безопасности.

Чтобы обойти это, я видел, как некоторые люди переопределяли типы файлов, поэтому сервер рассматривает все файлы .html как сценарии PHP - я не рекомендую этого, поскольку это замедлит обработку всех файлов, даже если они не содержат PHP. Следуйте принципу наименьшего сюрприза - пусть ваши HTML-файлы будут .html, а ваши PHP-файлы - .php - и все будут счастливы.

1 голос
/ 24 ноября 2008

Если вы поместите PHP в файл .html и включите его (), он должен работать. Однако, если кто-то запросит файл .html непосредственно с сервера, он сможет увидеть весь ваш PHP-код необработанным, что опасно. Поэтому, если вы делаете это, то либо поместите эти файлы в недоступный веб-каталог (например, над корнем документа), либо измените конфигурацию вашего веб-сервера так, чтобы файлы .html рассматривались как PHP.

Вы можете включить () любой файл, но у вас могут возникнуть проблемы с доступом к некоторым каталогам, если в PHP есть ограничение open_basedir (которое вы, вероятно, найдете в большинстве веб-хостов)

0 голосов
/ 25 ноября 2008

Джеймс Муссер:

Я думаю, что вы имеете в виду Apache SSI включает в себя (см. http://httpd.apache.org/docs/2.2/howto/ssi.html#standard-footer)

Не зная ответа, я попробовал, и вот мои результаты

Extension  Call method        PHP runs
 .html      browser            no
 .html      Apache #include    no
 .html      PHP include()      yes
 .php       browser            yes
 .php       Apache #include    yes
 .php       PHP include()      yes

(Тестирование выполнено с использованием WinXP, Apache 2.2.3, PHP 5.2.26 и CentOS 5.2, Apache 2.2.3, PHP 5.1.16)

Таким образом, ваш ответ ДА ​​- если вы хотите вызвать PHP-скрипт через Apache SSI #include, он должен иметь расширение .php (или другое расширение, например .php4 .php5 и т. Д., Которое зарегистрировано в Apache). как скрипт PHP), иначе он НЕ будет работать.

...