Мы унаследовали страницу PHP, которая отлично работает на Ubuntu, но выдает исходный код на экран в системе Windows 7, использующей XAMMP с использованием PHP 5.4 или WAMP с использованием PHP 5.3.
Точка, где происходит свалка, похоже, когда она пытается разобрать комбинацию символов "- > " (свойство объекта). Когда я изменяю это на "[]" для доступа в качестве элемента массива, он проходит мимо этого, но затем выгружает исходный код на дисплей, который появляется после комбинации символов "= > " (сопоставление). Комментируя это, не работает, только удаление всей строки заставляет его пройти.
Наконец, когда он просто распечатывает html с "<" и " > ", что также вызывает сброс экрана. Если я заменю эти символы объектами html, исходный код больше не сбрасывается, но программа не отображает меню и вообще не работает. Обратите внимание, что я могу успешно войти в приложение через страницу входа в систему, хотя даже это отображает "POST" и некоторые другие "<" и " > " в поле имени пользователя.
Я пробовал использовать unix2dos для всего приложения, но это не имело никакого эффекта. Также попытался преобразовать текст одной из страниц-нарушителей в UTF-8, но все равно не повезло.
В ответ на некоторые из поставленных вопросов:
Рабочая версия ubuntu - это PHP-версия 5.3.10-1ubuntu3.1
Первая часть кода, которая работает в Ubuntu, а не в Windows, такова:
public function __construct($gid)
{
$this->id = $gid;
return $this->retrieve();
}
где сбрасывание кода на дисплее начинается с:
id = $gid; return $this->retrieve(); }
Да, PHPInfo работает, показывая для сервера WAMP с PHP версии 5.3.13
Я попытался изменить ярлык short-open, но это не имело значения.
Продукт был написан для нас группой аутсорсинга, и, похоже, он основан на какой-то структуре. Но я не мог найти ссылки на какие-либо из классов в Google, так что, возможно, они все это писали сами.
Переход к журналу apache, фактическая ошибка происходит в этой строке:
$_SESSION['admin_gid'] = Membership::getGroup($rUser['id']);
где сообщение об ошибке:
Членство 'не найдено
Членство - это класс, который объявляется позже в том же файле, что и тот, который сбрасывается на дисплее в указанной выше точке, поэтому по какой-то причине парсер PHP не понимает, что он читает PHP-код с этой точки.