Я работаю с устаревшим кодом, который у кого-то ушел, и это моя задача – повторно развернуть код. Я использую Windows Server 2003, Apache 2.0.63 и PHP 5.2.10.
Это не работает. По крайней мере, не так, как я ожидал, что это сработает. Назовите это ошибками, если хотите.
При проверке у меня возникло подозрение, что этот код (который появляется много раз в приложении) является виновником.
& $ This->
Чтобы проиллюстрировать проблему, я воспроизвожу этот код:
<? PHP phpinfo (); // $ variable = & $ this-> request; ?>
Вышеприведенный код выполнен красиво и, как ожидалось. Однако, если я изменил код на:
<? phpinfo (); // $ variable = & $ this-> request; ?>
Код неверно работает, и вместо этого выдает этот результат на экране, что, конечно, совершенно нежелательно и неожиданно.
запрос; ?>
Теперь код завален таким же кодом, как и выше, и, таким образом, приложение теперь производит вывод на экране, подобном этому:
запрос; $ user = & $ this-> user; // Это комментарий return false; ?>
для кода, который читается как:
<? $ request = & $ this-> request; $ user = & $ this-> user; // Это комментарий return false; ?>
Я пытался изменить все <? с <? php всякий раз, когда & $ this-> возвращает свою уродливую голову, но большую часть времени вместо этого вводит новую ошибку.
Я переустановил PHP и Apache, даже используя другую версию PHP (5.2.6), и это все равно не сработает. Я развернул код в своем локальном хосте (Mac OS X, PHP 5.2.8 и Apache 2.0.63), и он работал без хлопот.
Пожалуйста, никому, никакого просветления будет более чем достаточно.
В php.ini вам необходимо установить следующую директиву:
short_open_tag = On
Из руководства :
Указывает, разрешена ли короткая форма (
<? ?>
) Открытого тега PHP …
Если у вас есть время на ваших руках, вы можете захотеть заменить все те короткие теги ' <?
'с полноформатными <?php
, для лучшей переносимости (см., что только что произошло с вами? 🙂
моя рекомендация – не использовать открытые теги, потому что это может помешать кодам <?xml
. У меня также была эта проблема раньше, просто замените все <?php
на <?
, а затем снова все <?
до <?php
.
Таким образом, вы не получите никаких
<? <-- one space after the '?'
а также
<?php <-- one space after the 'p'
надеюсь, это поможет …
Если вы хотите использовать короткие теги: ("<?")
они должны быть включены в php.ini. См. Эту ссылку.