Я работаю с устаревшим кодом, который у кого-то ушел, и это моя задача – повторно развернуть код. Я использую 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. См. Эту ссылку.