Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: помогите, похоже у меня глюк с функцией mysql_connect();
 
 автор: LimP   (09.08.2004 в 22:21)   письмо автору
 
 

Здравствуйте,я недавно приобрел вашу книгу,решил изучить PHP,Apache,MysQl,php 5-все скачал,установил давно,все работает,но вот сейчас возникла проблема... я пытаюсь реализовать регистрацию пользователя(в книге стр.185-189),написал код для всех трех файлов,но в файле auth.php,после заполнения мной форм имя и пароль,появляется ошибка:"Fatal error: Call to undefined function mysql_connect() in c:\www\Apache\htdocs\auth\auth.php on line 14" насколько я понял,мой пхп не хочет определить функцию mysql_connect(); подскажите ,пожалуйста,что мне делать,ведь это очень важный нювнс,еще у меня есть подозрения,что мои пхп таким же образом воспримет либо остальные функции,связанные с мускулом,либо конкретно в данном примере,он наверное не воспримет mysql_query и другие...

   
 
 автор: cheops   (09.08.2004 в 22:44)   письмо автору
 
   для: LimP   (09.08.2004 в 22:21)
 

Одной из особенностей текущих версий PHP 5 является то, что все расширения (в том числе и работа с СУБД MySQL) по умолчанию отключены. Для того чтобы включить поддержку MySQL необходимо в конфигурационном файле php.ini расскомментировать строку

extension=php_mysql.dll

а php_mysql.dll расположенную в папке C:/php/ext скопировать в С:/Windows/system32. После перезагрузки Web-сервера Apache функции для работы с MySQL станут доступными.

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=194&page=1

   
 
 автор: LimP   (09.08.2004 в 23:06)   письмо автору
 
   для: cheops   (09.08.2004 в 22:44)
 

раскомментировал я эту строку(она среди множества других,похожих на нее строк находится-так?),скопировал php_mysql.dll в system32 ,там еще вроде в php.ini надо extension_dir="c:\php\ext",такбвсе правильно???но только после перезагрузки он мне зразу warning-сообщение по этому поводу выдал,мол немогу че-то открыть или че-то у него не получается с c:\php\ext\php_mysql.dll как мне быть дальше(скрипт все-еще не работает)

   
 
 автор: cheops   (09.08.2004 в 23:21)   письмо автору
 
   для: LimP   (09.08.2004 в 23:06)
 

Так как php_mysql.dll скопирована в директорию C:/WINDOWS/system32, значение директивы extension_dir лучше оставить по умолчанию:
extension_dir = "./"


PS Если это не поможет скопируйте php_mysql.dll в C:/PHP, там где у вас расположен php-cgi.exe

   
 
 автор: LimP   (09.08.2004 в 23:23)   письмо автору
 
   для: cheops   (09.08.2004 в 23:21)
 

Вот даже какая ошибка точно при этом возникает(при перезагрузке аппача) "Unable to load dynamic libriary 'c:\php\ext\php_mysql.dll'-Не найдена указанная процедура" хотя файл находится в этой директории,наверное процедура mysql_connect(); просто как-то может не описана в моем php_mysql.dll??? ну,изменил я extension_dir,но от этого только в выдаваемой ошибке поменялось "c:\php\ext" на "./" вот и все,может вы что-то сможете сделать,если я вам его по почте вышлю???или так знаете,что делать...

   
 
 автор: cheops   (09.08.2004 в 23:30)   письмо автору
 
   для: LimP   (09.08.2004 в 23:23)
 

Лучше не зацикливайтесь на этой проблеме, может ему не нравится прямой слеш \ и стоит попробовать обратный /. Но если вы установите директиву
 extension_dir = "./" 

и скопируете php_mysql.dl в С:/php, PHP подцепит динамическую библиотеку 100%.

   
 
 автор: LimP   (09.08.2004 в 23:43)   письмо автору
 
   для: cheops   (09.08.2004 в 23:30)
 

так,значит надо раскомментировать строку(просто убрать перед ней ; -так ведь?),затем скопировать этот файл в c:\php ,ну там этот extension_dir поменять и все,работает,говорите...,а тот php_mysql.dll,который в system32 скопировал,удалить или как?

   
 
 автор: cheops   (09.08.2004 в 23:49)   письмо автору
 
   для: LimP   (09.08.2004 в 23:43)
 

Можете удалить, но даже если вы его оставите, на работоспособность это не повлияет - так как PHP будет загружать библиотеку из C:/PHP и дальше искать уже не будет.

   
 
 автор: LimP   (09.08.2004 в 23:53)   письмо автору
 
   для: LimP   (09.08.2004 в 23:23)
 

да нет все-равно,я все сделал точно,как вы сказали,но только выдаваемая при перезапуске аппача ошибка немного изменилась "Unable to load dynamic libriary
>'./php_mysql.dll'-Не найдена указанный модуль" ...

   
 
 автор: cheops   (09.08.2004 в 23:59)   письмо автору
 
   для: LimP   (09.08.2004 в 23:53)
 

Посмотрите пожалуйста размеры файлов:
php_mysql.dll - 49152
php-cgi.exe - 53248

Дистрибутив - php-5.0.0-Win32.zip

   
 
 автор: LimP   (10.08.2004 в 00:02)   письмо автору
 
   для: cheops   (09.08.2004 в 23:59)
 

да,у меня точно такие-же размеры...обоих файлов

   
 
 автор: cheops   (10.08.2004 в 00:38)   письмо автору
 
   для: LimP   (10.08.2004 в 00:02)
 

Хм... а вы не могли бы мне прислать ваш php.ini на cheops@softtime.ru или simdyanov@softtime.ru, чтобы я смог воспроизвести ситуацию у себя на машине?

   
 
 автор: LimP   (10.08.2004 в 09:44)   письмо автору
 
   для: cheops   (10.08.2004 в 00:38)
 

да,я выслал вам его на simdyanov@softtime.ru

   
 
 автор: cheops   (10.08.2004 в 10:32)   письмо автору
 
   для: LimP   (10.08.2004 в 09:44)
 

Отослал php.ini обратно. Ему действительно не нравятся прямые слеши в стиле Windows \, после замены слешей на обратные / на моей машине всё заработало

doc_root = "c:/www/Apache/htdocs"
extension_dir = "C:/php/ext"

PS Если что не получится пишите - будем разбираться дальше.

   
 
 автор: LimP   (10.08.2004 в 15:31)   письмо автору
 
   для: cheops   (10.08.2004 в 10:32)
 

опять не получилось,скопировал я этот файл себе в каталог windows,послеперезагрузки аппача он мне опять ошибку выдал,я вам принтскрин на мыло отправил...

   
 
 автор: cheops   (10.08.2004 в 21:44)   письмо автору
 
   для: LimP   (10.08.2004 в 15:31)
 

/*Задумчиво так...*/ При этом php_mysql.dll в C:/PHP/ext имеется?

   
 
 автор: LimP   (10.08.2004 в 21:52)   письмо автору
 
   для: cheops   (10.08.2004 в 21:44)
 

канэшна,но в ошибке-то он пишет,что не найден модули или не найдена процедура,значит сам-то файл он видит...еще,пришли-ка мне,пожалуйста свой пхп.ини я попробую своий твоим заменить...

   
 
 автор: cheops   (10.08.2004 в 22:24)   письмо автору
 
   для: LimP   (10.08.2004 в 21:52)
 

Отослал на почту...

   
 
 автор: cheops   (10.08.2004 в 22:13)   письмо автору
 
   для: LimP   (10.08.2004 в 15:31)
 

Не могли бы вы так же сообщить версию Apache?

   
 
 автор: LimP   (10.08.2004 в 22:17)   письмо автору
 
   для: cheops   (10.08.2004 в 22:13)
 

вот : apache_1.3.31-win32-x86-no_src

   
 
 автор: cheops   (10.08.2004 в 22:26)   письмо автору
 
   для: LimP   (10.08.2004 в 22:17)
 

А.... а я на 2.0.50 тестирую, сейчас на 1.3 по-экспериментирую - напишу о результатах...

   
 
 автор: LimP   (10.08.2004 в 22:28)   письмо автору
 
   для: cheops   (10.08.2004 в 22:26)
 

жду с нетерпением результата...кстати,у мя есть 2.0.50...

   
 
 автор: LimP   (10.08.2004 в 23:30)   письмо автору
 
   для: LimP   (10.08.2004 в 22:28)
 

я думаю,ну его кчертям,этого аппача 1.3 .поставлю 2,0,50 и не буду мучиться...

   
 
 автор: cheops   (10.08.2004 в 23:52)   письмо автору
 
   для: LimP   (10.08.2004 в 23:30)
 

Может и правильно... Apache 2 много менее капризен.

   
 
 автор: cheops   (11.08.2004 в 00:30)   письмо автору
 
   для: cheops   (10.08.2004 в 23:52)
 

Хм... хотя вот снёс Apache 2, поставил apache_1.3.27-win32-x86-no_src.exe - всё работает.... Попробуйте переставить Apache.

http://www.softtime.ru/info/articlephp.php?id_article=24

   
 
 автор: Kirill   (11.08.2004 в 10:45)   письмо автору
 
   для: cheops   (11.08.2004 в 00:30)
 

Возможно, вы не скопировали в дирректорию ОС (C://windows)
библиотеку "libmysql.dll", что храниться в корневом каталоге php
(C://php)

   
 
 автор: cheops   (11.08.2004 в 10:55)   письмо автору
 
   для: Kirill   (11.08.2004 в 10:45)
 

Да, действительно, попробуйте поискать её, но мне кажется она туда должна попадать при установке MySQL...

   
 
 автор: LimP   (11.08.2004 в 12:09)   письмо автору
 
   для: cheops   (11.08.2004 в 10:55)
 

ага,только подскажи мне пожалуйста,какой текст надо добавить в httpd.conf на апаче 2,чтобы подключить php5...

   
 
 автор: LimP   (11.08.2004 в 12:48)   письмо автору
 
   для: LimP   (11.08.2004 в 12:09)
 

да все,не надо,поставил я аппачь,скачал указанный файл в windows,угадайте что???правильно-при рестаре аппача вылазеет знакомая нам ошибка...и опять нихрена не работает...

   
 
 автор: cheops   (11.08.2004 в 13:02)   письмо автору
 
   для: LimP   (11.08.2004 в 12:48)
 

А MySQL какой версии? И запущен ли сам сервер MySQL, и если запущен, то какой (имя процесса в диспетчере задач, например, mysql-max-nt.exe)?

   
 
 автор: LimP   (11.08.2004 в 13:21)   письмо автору
 
   для: cheops   (11.08.2004 в 13:02)
 

спасибо,все.я все настроил,похоже,что он видит мускул,к нему подклюсается,но пишет регистрация невозможна,это я наверное не создал базу данных auth,кстати,расскажите,если вот я создал новую базу данных через sql-запрос в досе,то где мне ее можно просмотреть,она должна появиться в мускуладмине???кстати вот еще код файла auth.php,может я в нем че-то напортачил...
<?php
$dblocation 
"127.0.0.1";
$dbname "local";
$dbuser "root";
$dbpasswd "";

session_start();

if (isset(
$HTTP_POST_VARS['userid']) &&
isset(
$HTTP_POST_VARS['password']))
{
 
$userid $HTTP_POST_VARS['userid'];
 
$password $HTTP_POST_VARS['password'];
 
$db_connect mysql_connect($dblocation,$dbuser,$dbpasswd);
 
mysql_select_db('auth',$db_connect);
 
$query "select * from auth where name='".$userid."'
 and pass=password('
$password')";
 
$result mysql_query($query,$db_connect);
 if (
$result)
 {
  
$HTTP_SESSIoN_VARS['valid_user'] = $userid;
 }
}
?>
<html>
<body>
<h1>Страница Регистрации</h1>
<?
if (isset($HTTP_SESSION_VARS['valid_user']))
{
 echo 
'Вы зарегестрированы как '.$HTTP_SESSION_VARS['valid_user'].'<br />';
 echo 
'<a href="destroy.php">Exit</a><br />';
}
else
{
 if(isset(
$userid))
 {
  echo (
"Регистрация невозможна!");
 }
?>
<form method="post" action="auth.php">
<table>
<tr><td>Имя:</td>
<td><input type="text" name="userid"></td></tr>
<tr><td>Пароль:</td>
<td><input type="password" name="password"></td></tr>
<td><td colspan=2><input type=submit value='Зарегестрировать'>
</td></tr>
</table></form>
<?
}
?>
<a href="members_only.php">Только для зарегестрированных пользователей</a>
</body>
</html>
?>

   
 
 автор: cheops   (11.08.2004 в 13:30)   письмо автору
 
   для: LimP   (11.08.2004 в 13:21)
 

>она должна появиться в мускуладмине???
Должна, но по моему не сразу... Лучше проверить это командой
SHOW DATABASES;

в клиенте mysql. Если вас раздражает командная строка - вы можете воспользоваться Web-интерфейсом к MySQL - phpMyAdmin.
>кстати вот еще код файла auth.php
Когда устанавливается соединение с сервером и выбирается база данных - лучше проверять дескрипторы явно:
<?php
    $dblocation 
"127.0.0.1"
    
$dbname "local"
    
$dbuser "root"
    
$dbpasswd ""

$dbcnx mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!
$dbcnx)
{
  echo( 
"<P>В настоящий момент сервер
         базы данных не доступен, поэтому
        корректное отображение страницы
        невозможно.</P>" 
);
  
mysql_error();
  exit();
}

if (!
mysql_select_db($dbname,$dbcnx) )
{
  echo( 
"<P>В настоящий момент база
        данных не доступна, поэтому
        корректное отображение страницы
        невозможно.</P>" 
);
  
mysql_error();
  exit();
}
?>


PS Кстати, давайте новую тему заведём для дальшейшего обсуждения, а то это уже слишком длинная :))) и с ней не очень удобно работать...

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=189&page=1

   
 
 автор: Lonely_Wolf   (16.08.2004 в 09:41)   письмо автору
 
   для: cheops   (11.08.2004 в 13:30)
 

Есть еще неплохая програмка MySQL Manager, несколько минут,чтобы разобраться с ней - и дальше уже никаких проблем. Хотя я вот привык к ком.строке :) Кстати, из скрипта я сделал вывод, что у вас пользователь root заходит просто без пароля. Это не опасно?

   
 
 автор: cheops   (16.08.2004 в 09:53)   письмо автору
 
   для: Lonely_Wolf   (16.08.2004 в 09:41)
 

На локальной машине никакой опасности нет, так как сервер не виден из сети... (в этом случае даже TCP/IP не задействуется - клиент и сервер общаются через сокет).

   
 
 автор: marin.ru   (05.12.2004 в 02:04)
 
   для: LimP   (09.08.2004 в 23:23)
 

Надо еще в папку c:\windows\system32 закинуть дополнительную библиотеку под названием libmysql.dll. Должно сработать.

   
 
 автор: Chavez   (26.08.2004 в 19:27)   письмо автору
 
   для: LimP   (09.08.2004 в 22:21)
 

возникла таже проблема ... перепробывал все советы данные в этой ветке но ничего не помогло все равно выдает ошибку о обращении к неизвестной функции может быть что-нибудь посоветуете??
p.s. Apache2.0.50+PHP5.0.0+MySQL4.0.20d
p.s.s а есть функциональные различия между ПХП установленого в качестве модуля Апача и CGI??
p.s.s.s прикрепил свой конфиг

   
 
 автор: Адоп Акробат   (26.08.2004 в 19:54)   письмо автору
 
   для: Chavez   (26.08.2004 в 19:27)
 

А сколько мегабайт весит ваш MySQL???

   
 
 автор: Chavez   (26.08.2004 в 20:48)   письмо автору
 
   для: Адоп Акробат   (26.08.2004 в 19:54)
 

архив-20.7 мб

   
 
 автор: cheops   (26.08.2004 в 23:31)   письмо автору
 
   для: Chavez   (26.08.2004 в 19:27)
 

Я бы не советовал использовать дистрибутивы с буквой d на конце. Лучше использовать просто MySQL4.0.20. Ваш php.ini - чист и после замены и перезагрузки web-сервера Apache - прекрасно прижился на моей машине. Если вам не трудно, сообщите пожалуйста выдаётся вам сообщение о невозможности загрузить динамическую библиотеку php_mcrypt.dll или нет.

PS Функциональные различия при использовании PHP в качестве модуля и внешней CGI-программы довольно существенные. Модуль исполняется гораздо быстрее (нет надобности запускать его в качестве отдельного потока при выполнении каждого скрипта), но он менее гибок в настройках и необходима его перекомпиляция при внесении или исключении дополнительных возможностей (например библиотеки расширений). Обычно модуль используют на боевых серверах, в то время как CGI-скрипт при написании и отладке Web-приложений...

   
 
 автор: Chavez   (27.08.2004 в 08:50)   письмо автору
 
   для: cheops   (26.08.2004 в 23:31)
 

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

   
 
 автор: cheops   (27.08.2004 в 14:49)   письмо автору
 
   для: Chavez   (27.08.2004 в 08:50)
 

Хм... странно - так бывает, если модуль скомпилен без поддержки MySQL или не подключена динамическая библиотека в php.ini, в случае CGI-варианта...

   
 
 автор: Unmerciful   (23.03.2005 в 18:47)
 
   для: cheops   (27.08.2004 в 14:49)
 

Короче.. я все прочитал, что вы написали выше...
У меня такая же ошибка...
И так.. начнем с того, что я сделал..
1. скопировал libmysql.dll и в c:\windows\ и в c:\windows\system32
2. скопировал php_mysql.dll и в c:\windows\ и в c:\windows\system32
3. скопировал php_mysql.dll в c:\php
4. в php.ini изменял и на
extension_dir = "c:/php/ext"
extension_dir = "./"
и
extension_dir = "c:\php\ext"
extension_dir = ".\"
Короче ничего не хочет..
у меня стоит
1. Apache 2.0.52
2. PHP 5.0.3
3. MySQL 4.0.20 (кста пробовал ставить и 4.1 и еще пару версий... короч все равно..)
Помогите плиз...

   
 
 автор: TXT   (26.03.2005 в 15:55)
 
   для: Unmerciful   (23.03.2005 в 18:47)
 

Ех... Те же самые версии, те же самые попытки и те же самые результаты :(

   
 
 автор: akucher   (13.04.2005 в 02:23)   письмо автору
 
   для: LimP   (09.08.2004 в 22:21)
 

Если кому интересно:

поборол такую проблему путем перенастройки PHP, как CGI-приложения..

правда появились новые :)

   
 
 автор: Deathless   (15.04.2005 в 00:04)   письмо автору
 
   для: LimP   (09.08.2004 в 22:21)
 

У меня была такаяже проблема!!!! Вобщем расказываю: Я с копировал php_mysql.dll в C:\WINNT , C:\WINNT\SISTEM32 , C:\WINNT\SISTEM и скопировал php.ini в C:\WINNT и в обоих ини я открыл тег загрузки етого длл Так же я скопировал все dll bp C:\PHP\EXT в C:\PHP\ И перезагрузил комп и красота все работает так что удачи :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования