Включая различные типы файлов в PHP - PullRequest
3 голосов
/ 05 апреля 2009

Я взял на себя проект PHP и пытаюсь запустить его на своем компьютере разработчика. Я разработчик, а не системный администратор, поэтому мне сложно заставить его работать.

Предыдущий разработчик использовал файлы .h для включения PHP. Моя текущая конфигурация принимает этот файл .h и включает его без выполнения. Что мне нужно искать в моем конфиге apache (или это мой php.ini)?

EDIT:

Что-то щелкнуло, когда я прочитал один из комментариев ниже. Код использует теги стиля ASP "<?". Я включил этот параметр в php.ini и, согласно phpinfo (), он включен, но apache все еще просто включает код в виде текста.

Я только что проверил и запустил код с полным открывающим тегом PHP "<?php", чтобы решить проблему. Сказав это, я все еще хотел бы, чтобы это работало по-другому.

Я запускаю код на Macbook с последними доступными версиями. PHP 5.2.6, postgresql 8.3 и apache 2.

Код работает на промежуточном сервере, но я не могу понять, в чем разница.

EDIT

Durrr ... У меня не было включено short_open_tags в php.ini.

Ответы [ 6 ]

6 голосов
/ 05 апреля 2009

Может быть проблема в том, что включаемый вами файл .h просто начинается в коде php без открывающего тега "<?php"?

С включает документацию:

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

2 голосов
/ 05 апреля 2009

PHP - интерпретируемый язык, поэтому вы не можете «включить» файл, не выполнив его. Помните, что «.h» - это просто расширение файла, поэтому, хотя предыдущий кодер мог поместить PHP в файл «.h», это все же просто PHP.

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

1 голос
/ 05 апреля 2009

Вы должны изменить их все на расширения .php. Но если вы собираетесь оставить их как .h, вы измените отображение в Apache. Это Apache, который запускает файл через правильный интерпретатор, а не PHP. Движок PHP будет обрабатывать все, что ему передано.

1 голос
/ 05 апреля 2009

вы можете использовать файл .htaccess и добавить:

php_value auto_prepend_file /path/to/include-file.h


Редактировать

Я только что прочитал, что .htaccess работает только с модульной версией php.

0 голосов
/ 05 апреля 2009

Если в файлах .h отсутствует директива <?php, вам, возможно, придется переключиться с include на что-то вроде:

eval( file_get_contents("file.h") );

Лично я стараюсь избегать eval всякий раз, когда могу, но иногда выбора просто нет.

0 голосов
/ 05 апреля 2009

include и require выполнят включенный файл. Если вы используете readfile , он просто отображает файл, не рассматривая его как код PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...