PHP lost variables mining

xlex

Guest
PHP lost variables mining

Скажите, пожалуйста, может кто сталкивался: PHP 4/5 вдруг "теряет" значение переменной.

Выражается это в логах такого толка:
========================
[27-Feb-2005 23:29:39] PHP Warning: mysql_real_escape_string(): Can't connect to local MySQL server through socket '/tm
p/mysql.sock' (2) in /home/xlex/includes/core/db.inc on line 19
[27-Feb-2005 23:29:39] PHP Warning: mysql_real_escape_string(): A link to the server could not be established in /home/
xlex/includes/core/db.inc on line 19
[27-Feb-2005 23:29:39] PHP Warning: mysql_real_escape_string(): Can't connect to local MySQL server through socket '/tm
p/mysql.sock' (2) in /home/xlex/includes/core/db.inc on line 19
[27-Feb-2005 23:29:39] PHP Warning: mysql_real_escape_string(): A link to the server could not be established in /home/
xlex/includes/core/db.inc on line 19
[27-Feb-2005 23:29:39] PHP Warning: mysql_real_escape_string(): Can't connect to local MySQL server through socket '/tm
p/mysql.sock' (2) in /home/xlex/includes/core/db.inc on line 19
[27-Feb-2005 23:29:39] PHP Warning: mysql_real_escape_string(): A link to the server could not be established in /home/
xlex/includes/core/db.inc on line 19
[27-Feb-2005 23:29:39] PHP Warning: mysql_query(): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
(2) in /home/xlex/includes/core/db.inc on line 34
[27-Feb-2005 23:29:39] PHP Warning: mysql_query(): A link to the server could not be established in /home/xlex/inclu
des/core/db.inc on line 34
========================

Итак весь лог. Для тех кому лениво читать, поясню: в определённый момент PHP решает, что функциям mysql* ничего не передаётся и надо использовать аргументы по умолчанию и лезть по локальному сокету.

Идиотизм/непонятность ситуации усугбляется тремя факторами:
-1. Код (PHP) не менялся;
-2. По утверждению хостера софт (Apache, PHP, MySQL) не изменялись;
-3. в коде стоят проверки на пустые аргументы функций, например, функция db_query(), через которую происходят все обращения к базе данных, выглядит так:
PHP:
function db_query($Query = NULL) {

        if (!is_string($Query)) {global $ErrMsg; func_error_handler(array(__FUNCTION__, func_get_args(), $ErrMsg['InvalidArgs'])); return FALSE;}

        debug_log('SQL', $Query);

        $QueryResult = mysql_query($Query);

        if ($QueryResult) {return $QueryResult;}
        else {
                $ErrorNo = mysql_errno();
                $ErrorDescription = db_string_escape(mysql_error());
                $Query = db_string_escape($Query);
                makelog('MySQL', mysql_get_server_info(), "SQL query failed. Error ($ErrorNo): \'$ErrorDescription\'.\nQuery: [i]\'$Query\'[/i]", 1, 0);
                return FALSE;
        }//if(!mysql_errno

}//function
Сама ошибка возникает только у меня (среди многих клиентов), без какой-либо систематики...

Помогите, пожалуйста: ни я ни хостер не знаем куда копать... Может кто сталкивался с подобным, или просто какие идеи будут?

-~{}~ 02.03.05 10:05:

Никаких идей так и не появилось, но хостер предложил такое (с моей точки зрения - неправильное, но в данной ситуации красивое) решение - в .htaccess прописать строки:

php_value mysql.default_user USER
php_value mysql.default_password PASS
php_value mysql.default_host HOST

вроде пока работает...
 

deek

Новичок
http://dev.mysql.com/doc/mysql/en/can-not-connect-to-server.html

можно предположить, что некий таинственный cronjob очищает /tmp
 

xlex

Guest
Проблема не в этом.
Сервер не локальный, но PHP в определённый момент решает обратное (см. мой пост).
 
Сверху