Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Linux и FreeBSD » Программирование в *nix » Проблема с Apache

Ответить
Настройки темы
Проблема с Apache

Аватара для SantaXP

Старожил


Сообщения: 453
Благодарности: 16

Профиль | Отправить PM | Цитировать


Возникла проблема с Апачем под FreeBSD. Значит так, html страницы из htdocs отображаются нормально, а вот скрипты CGI и PL в браужере отображаются лишь html кодом и не более. В чём проблема - понять не могу, надеюсь на ваш опыт и что вы мне поможете. Спасибо за внимание.
-----
Код страницы:
#!/usr/local/bin/perl5
use CGI::Carp qw(fatalsToBrowser);
print qq(
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Yo-Ho-Ho Mother fuckers!!!</title>
</head>
<body text="red">
<p align="center">
<img src="images/logo.png" width="300" height="50" border="0" alt="Yo-Ho-Ho" align="middle" />
</p>
<p><font face="Verdana" size="2" color="black">23 june 02:05 nigth</font></p>
<div align="left"><font face="Verdana" size="2">Welcome to my fucking web-sait! I'm glade to see
you, dear (ip). So, if you like my dizaign
- please, push the button, if else - go fuck your self some of bitch!!! Well, you know, it is not
a simple thing to create, to create saits, programms or anything else. For what I write these
bullshit??? He... I really don't know, so fuck off - I'm going to sleep.</font></div>
</body>
</html>
);
-------------
Текст, который отображается в браузере:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Yo-Ho-Ho Mother fuckers!!!</title>
</head>
<body text="red">
<p align="center">
<img src="images/logo.png" width="300" height="50" border="0" alt="Yo-Ho-Ho" align="middle" />
</p>
<p><font face="Verdana" size="2" color="black">23 june 02:05 nigth</font></p>
<div align="left"><font face="Verdana" size="2">Welcome to my fucking web-sait! I'm glade to see
you, dear (ip). So, if you like my dizaign
- please, push the button, if else - go fuck your self some of bitch!!! Well, you know, it is not
a simple thing to create, to create saits, programms or anything else. For what I write these
bullshit??? He... I really don't know, so fuck off - I'm going to sleep.</font></div>
</body>
</html>
Дата: 24-06-2005 на 15:07

-------
...Не так страшен чёрт FreeBSD, как ужасен глюк Windows...


Отправлено: 15:06, 24-06-2005

 

Аватара для archy

Ветеран


Сообщения: 659
Благодарности: 3

Профиль | Отправить PM | Цитировать


Надо первой строкой отдать браузеру заговок:
Код: Выделить весь код
print "Content-Type: text/html\n\n";

Отправлено: 14:42, 25-06-2005 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


и еще:
где лежит Perl-скрипт и какие права на него выставлены?

Отправлено: 17:13, 25-06-2005 | #3


Аватара для SantaXP

Старожил


Сообщения: 453
Благодарности: 16

Профиль | Отправить PM | Цитировать


Спасибо, я попросту забыл прописать эту строку в скрипте. Всем спасибо, как говориться - отбой!

-------
...Не так страшен чёрт FreeBSD, как ужасен глюк Windows...


Отправлено: 22:29, 25-06-2005 | #4


Аватара для SantaXP

Старожил


Сообщения: 453
Благодарности: 16

Профиль | Отправить PM | Цитировать


Разобравшись с отображением скриптов в браузере и при изучении в тоё же книги ("Разработка CGI-приложений на PERL") я столкнулся с новой проблемой...
---
И так. В одном из первых примеров скриптов в книге даётся ведение статистики пользователей. А именно занесение информации о пользователях, посетивших твой сайт в таблицу acess_log базы данных visitors на сервере mysqlhost. Сервер apache носит имя localhost. Занеся SetENV visitors@mysqlhost для создания новой переменной окружения в httpd.conf я понял, что по какой то причине переменная не создаётся. Посему слегка модифицировал код своего модуля LogConnect.pm до такого состояния:
Цитата:
package LogConnect
use DBI;
use strict;
sub connect {
my $log_dsn = "DBI:mysql:database=visitors;host=mysqlhost";
my $log_dbh = DBI->connect($log_dsn, "root", "123456");
if (!defined($log_dbh)) {
print "\nerror: \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043a \u0434\u0430\u043d\u043d\u044b\u0445 MySQL:\n";
print DBI->errstr;
print "-" x 25 "\n';
return;
}
}
1;
---
Далее, я написал два скрипта, первый (vislog.cgi) для ведения статистики, а второй (viewlog.cgi) для её отображения. Вот их код:
Цитата:
#!/usr/local/bin/perl5 -wT
#vislog.cgi
use strict;
use POSIX;
use Socket;
use lib qw(.);
use LogConnect;

my $dbh = LogConnect->connect;
my $ip = $ENV{'REMOTE_ADDR'};
my $browser = $ENV{'HTTP_USER_AGENT'};
my $refer = $ENV{'HTTP_REFERER'};
my $here = $ENV{'REQUEST_URI'};

my @digits = split(/\./, $ip);
my $adress = pack("C4", @digits);
my $host = gethostbyaddr($address, AF_INET);

my $time = strftime("%Y-%m-%d %H:%M:%S",gmtime);

my $query = qq(
insert into acess_log values
('$ip','$host','$browser','$here','$referer','$time'));
my $sth = $dbh->prepare($query);
$sth->execute;
$dbh->disconnect;
Цитата:
#!/usr/local/bin/perl5 -wT
#viewlog.cgi
use strict;
use lib qw(.);
use LogConnect;

print "Content-Type: text/html\n\n";

my $dbh = LogConnect->connect;
my $query = qq(select CLIENT from acess_log);
my $sth = $dbh->prepare($query);
$sth->execute;
my %clients;
while (x$_ = $sth->fetchrow) {
$clients{$_}++;
}
$dbh->disconnect;
my @clients = sort {$clients{$b} <=> $clients{$a}};
keys %clients;
print <<HTML;
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=KOI8-R">
<title>\u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u043e\u0442\u0447\u0451\u0442</title>
</head>
<body bgcolor="white">
<center><h2>\u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u043e\u0442\u0447\u0451\u0442</h2></center>
<center><h3>\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 Web-\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432</h3></center>
<hr noshade>
<center>
<table border=1 cellpadding=3 cellspacing=3>
HTML
foreach (@clients) {
print qq(<td align=center>$_</td><td align=center>
$clients{$_}</td><tr>);
}
print <<HTML;
</table>
</center>
</body>
</html>
HTML
---
Однако при запуске любого из этих скриптов выдаётся сообщение:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, santaxp@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Apache/1.3.20 Server at localhost Port 80

-------
...Не так страшен чёрт FreeBSD, как ужасен глюк Windows...


Отправлено: 23:53, 26-06-2005 | #5


Аватара для SantaXP

Старожил


Сообщения: 453
Благодарности: 16

Профиль | Отправить PM | Цитировать


Так, я залез в логи и нашёл ошибку в синтаксисе. Немного подредактировал LogConnect.pm и теперь он выглядит так:
Цитата:
package LogConnect;
use DBI;
use strict;
use CGI::Carp qw(fatalsToBrowser);
sub connect {
my $log_dsn = "DBI:mysql:database=visitors;host=localhost";
my $log_dbh = DBI->connect($log_dsn, "root", "123456");
if (!defined($log_dbh)) {
print "Content-Type: text/html\n\n";
print qq(
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=KOI8-R">
<title>Ошибка!</title>
</head>
<body bgcolor="white">);
print "<p><font color='red'>error: Проблема с подключением к данных MySQL:</font></p>";
print "<p><font color='blue'>";
print DBI->errstr;
print "</font></p>";
print "-" x.25."\n";
return;
}
}
1;
Потом он выдал мне ошибку из vislog.cgi, что, мол:
Цитата:
Global symbol "$address" requires explicit package name at /usr/local/apache/cgi-bin/system/vislog.cgi line 27.
Execution of /usr/local/apache/cgi-bin/system/vislog.cgi aborted due to compilation errors.
Хм... Вот здесь мне и нужна ваша помощь. Ибо когда я пишу:
my $host = gethostbyaddr(my $address, AF_INET);
Он больше не жалуется по этому поводу, однако я не уверен, что так писать правильно...
Далее, он пожаловался, что нет модуля mysql.pm Посему я через CPAN установил его. Были проблемы с исходниками и их пришлось немного подправить, правда пока всё работает, слава богу.
Далее я опять запускаю vislog.cgi и вот, что он мне выдаёт:
Цитата:
error: Проблема с подключением к данных MySQL:

Unknown database 'visitors'
Content-type: text/html
Software error:

Can't call method "prepare" on an undefined value at /usr/local/apache/cgi-bin/system/vislog.cgi line 34.

For help, please send mail to the webmaster (santaxp@localhost), giving this error message and the time and date of the error.
(Раньше у меня была база данных visitors, однако когда переустонавливал во FreeBSD MySQL свсё стёр.)
И это ещё не всё! После mysql стала глючить, ибо он якобы не видел созданный мною mysqlhost и пришлось в LogConnect заменить это на localhost. Однако теперь при попытке в mysqlcc создать новый MySQL Server, скажем, localhost он пишет мне вот это:
Цитата:
[localhost] ERROR 1250: Client does not support authentication protocol requested by server; consider
upgrading MySQL client
----
Ужас! Что мне со всем этим делать???

-------
...Не так страшен чёрт FreeBSD, как ужасен глюк Windows...


Отправлено: 16:59, 27-06-2005 | #6

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


SantaXP
версия mysql? у них с переходом на 4.1 были некоторые довольно существенные изменения. Посмотрите тему "MySQL4.0->MySQL4.1 проблемы миграции". В частности:
Цитата:
(4.1)... использует несколько другой протокол авторизации, несовместимый с PHP 4.3.10. Служебные таблицы, хранящие пароли пользователей, изменили свой формат.

Отправлено: 18:51, 27-06-2005 | #7


Аватара для SantaXP

Старожил


Сообщения: 453
Благодарности: 16

Профиль | Отправить PM | Цитировать


Версия 5.0.0_2.
Однако ничего похожего в теме не нашёл. Блин, мне бы расшифровать данную фигню, которую мне пишет MySQL, точнее mysqlcc, а то очень надо.

-------
...Не так страшен чёрт FreeBSD, как ужасен глюк Windows...


Отправлено: 22:32, 27-06-2005 | #8


Аватара для SantaXP

Старожил


Сообщения: 453
Благодарности: 16

Профиль | Отправить PM | Цитировать


Опытным путём, я выяснил, что MySQL отказывается принимать пользователся root, как верховного (если можно так сказать ), но зато прекрасно даёт доступ ко всему пользователю mysql. Однако, при попытке подключения к серверу, если установить пароль на него командой: mysqladmin -u root password 123456 (скажем, такой простой и идеальный в домашних условиях пароль ) MySQL выдаёт сообщение:
----
[localhost] ERROR 1250: Client does not support authentication protocol requested by server; consider
upgrading MySQL client
----
Посему, без пароля всё работает чётко, однако каким образом этого избежать не ясно. Даже, если не учитывать данную "мелкую" придирчивость MySQL к паролям (может даже всвязи с неопытностью по отношению к ней) так, без пароля, можно жить и дальше.
Но вопрос:
----
Software error:

Can't call method "prepare" without a package or object reference at /usr/local/apache/cgi-bin/system/vislog.cgi line 34.

For help, please send mail to the webmaster (santaxp@localhost), giving this error message and the time and date of the error.
----
Остаётся неразрешённым... Ещё раз спасибо всем за внимание и терпение...

-------
...Не так страшен чёрт FreeBSD, как ужасен глюк Windows...


Отправлено: 23:32, 27-06-2005 | #9


Аватара для archy

Ветеран


Сообщения: 659
Благодарности: 3

Профиль | Отправить PM | Цитировать


Сказано же, обновите mysql клиент, потому как не поддерживается данный протокол аутентификации

Отправлено: 15:42, 29-06-2005 | #10



Компьютерный форум OSzone.net » Linux и FreeBSD » Программирование в *nix » Проблема с Apache

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
проблема с apache sys_admin Общий по FreeBSD 4 10-01-2008 10:55
[решено] Apache. Swissknife 3.0.0. Проблема с конфигурированием: The / was not found Sea Devil Вебмастеру 5 08-09-2007 14:34
Apache Guest Общий по FreeBSD 6 13-09-2004 10:36
apache Guest Вебмастеру 19 16-04-2004 02:28
Apache Wisp Вебмастеру 1 13-01-2004 19:39




 
Переход