Проект PHP работает на сервере Linux, но не на Windows - PullRequest
0 голосов
/ 14 декабря 2010

Итак, у меня есть две копии одного и того же проекта. Конфигурация серверов одинакова. Сценарий должен записать некоторые данные в базу данных, а затем перенаправить пользователя на соответствующую страницу с помощью функции header() в зависимости от данных, записанных в базу данных.

Он отлично работает на сервере Linux, хотя в Windows он сначала пытается перенаправить, а затем записать в базу данных, что, конечно, не работает, потому что нет записанных данных. Если я закомментирую функцию header() в версии для Windows, она пишет в базу данных, но не выполняет перенаправление.

Как два разных сценария могут работать так по-разному?

Edit:

Я не уверен, как мне показать код, так как его так много, и он так разбросан. Но в основном это просто функция, которая устанавливает header(), а затем функция, которая записывает в db. И когда он перенаправляет, он должен выбрать данные, которые были записаны в базу данных, и отобразить их.

Это очень упрощенная версия. Имейте в виду, что header устанавливается ДО записи в базу данных. Я считаю, что это виновник, но я не писал код, и я не могу изменить его архитектуру, поскольку он отлично работает на 2 серверах Linux, я просто не понимаю, как. Мне просто нужно, чтобы он работал на сервере Windows.

Это делает перенаправление в порядке, я имею в виду, что оно отправляет меня по ссылке, по которой оно должно отправлять меня, но не записывает в базу данных. Но если я закомментирую часть header(), она записывает в базу данных, но не выполняет перенаправление.

Ответы [ 3 ]

0 голосов
/ 14 декабря 2010

Документация для функции заголовка гласит следующее:

Примечание:

HTTP / 1.1 требует абсолютного URI в качестве аргумента для »Местоположение: включаясхема, имя хоста и абсолютный путь, но некоторые клиенты принимают относительные URI.Обычно вы можете использовать $ _SERVER ['HTTP_HOST'], $ _SERVER ['PHP_SELF'] и dirname (), чтобы самостоятельно создать абсолютный URI из относительного:

Используете ли вы относительный URL?Возможно, что LAMP любит относительный URL больше, чем WAMP.Это простой тест, так что стоит попробовать.

0 голосов
/ 16 декабря 2010

По какой-то причине он работает только на WampServer и с PHP 5.2.4

0 голосов
/ 14 декабря 2010

Попробуйте добавить оператор if следующим образом:

if(mysql_query('...') && mysql_affected_rows()){
   header("Location: redirectScript.php");exit();
}

Надеюсь, это поможет ...

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