ОБСУЖДЕНИЕ

Проблемы с Php скриптом новом сервере

4 ответов 5,3 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Статус
Закрыто для дальнейших ответов.
Автор темы
Имеется скрипт службы знакомств написанный на PHP, использующий базу данных MySQL. После того как я перенес его на новый сервер, почему-то появились ошибки и перестали работать некоторые функции...и тоже самое на локахосте(Windows XP)

Вот например неработает страница с формой регистрации. На старом сервере все ок -

http://66.221.192.244/default.php?open=signup

а вот на новом пусто - http://behibak.com/default.php?open=signup

В коде default.php:

if($open=="signup")
include("signup.php");
else
include("searchRecords1.php");
?>

Почему не инклюдится signup.php непонятно, вместо него searchRecords1.php. Если убрать searchRecords1.php всеравно пусто. signup.php находится в той-же директории. Если открыть signup.php напрямую то видно что форма регистрации работает, но зарегестрироватся не получается, в action стоит default.php?open=signup, после отправки форма переходит на страницу с той-же ошибкой, даже если поставить прямо signup.php всеравно не работает, форма еще раз загружается.

Еще при поиске , выдается "no records found" хотя в базе данных данные есть. Тоесть скрипт почему-то не берет оттуда данные. И еще проблема со входом в админовку, выдается что логин и пароль неверный, хотя пароль точно известен, после переноса со старого сервера его не менял.

В админовке пользователи отображаются, но при попытке удалить, выводится пустой экран. А так-же не работает одна страница, вместо нее появляется квадратик.

Загадочно как-то. На старом сервере все отлично работает.
 
Врубил E_ALL в php.ini получаю ошибки Notice: Undefined variable: на всех страницах

Что это может быть?
 
Это значит, что у вас не определена какая-то переменная. Криволапые программеры.
Как скоростной вариант решения проблемы:
Найти эту переменную в коде и поставить перед ней @.
Т.о.Было:
Код:
$variable = ....
А станет:
Код:
@$variable = ....
Значок @ - подавляет ошибки PHP.

МОжно еще в первую строчку главного скрипта вставить:

Код:
<?php
Error_Reporting(1);
?>

Это отключает контроль ошибок на сервере.
Я бы сначала попробовал второй вариант - с первым много лопатить.
 
  1. такие вопросы, в первую очередь, надо суппорту хостера задавать;
  2. если с MySQL записями проблема, то отдельную страницу с запросом SELECT * без фильтров и посмотреть, что пришло;
  3. whois behibak.com - свободен - может по IP, что бы посмотреть.
Обычно, самая распространенная ошибка при переносе скриптов к другому хостеру, связана как раз с переменными, которые инициализируются от глобальных. Если так, то перепиши прямое обращение к ним, например $name=$_POST['name']; и т/д.

Еще (по include), опция include_path должна иметь первым параметром точку (текущую директорию). Попробуй в .htaccess поставить строку php_value include_path ".:/usr/local/lib/php", но будет работать если PHP модулем подгружен, а иначе критическую ошибку выдаст (правильнее вставлять в блок <IfModule mod_php4.c> </IfModule>). И еще, если $err= include("signup.php");, то 1 = подключил и тогда ошибки в signup.php, а лучше заменить на require_once("signup.php") - сразу ошибку выдаст, если подгрузить не сможет.
 
2 garrymax: Да скорее всего скрипт писался на низком контроле ошибок. ПРОсто нужно либо его опустить до того, на котором писался скрипт. Либо переписать под высокий контроль.
 
Статус
Закрыто для дальнейших ответов.