Ik was opzoek naar MP3 streaming software zodat ik gemakkelijk de audiofiles vanaf mijn PC kan afspelen. Zo kwam ik bij Apache::MP3. Probleem is echter dat ik de module niet aan de praat kan krijgen. Hier is een beschrijving van wat ik tot nu toe heb gedaan:
1. Install apache version 2.0.49
2. Install mod_perl: 1.99_12_20040302
3. Install perl-mp3-info1.11-1.i586.rpm
4. Install apache-mp3-3.05
Ik heb sommige stukken code in MP3.pm moeten wijzigen om de module deels werkende te krijgen:
1. Het aanzetten van warnings zodat het debuggen makkelijker gaat:
use warnings;
no warnings 'redefine';
2. Code wijzigen:
gewijzigd naar dit:
en:
gewijzigd naar dit:
Ok, hier zijn de problemen:
1. Het bladeren door muziek directories gaat prima maar…
- De zoekfunctie werkt niet. Zodra ik een nummer wil zoeken, krijg ik de volgende error:
Server error 500: Either the server is overloaded (nope) or there was
an error in a CGI script. Apache error log: [error] handler
Apache::MP3 didn't return a valid return value! Hoe komt het dat het meerendeel van de module prima werkt (streaming/browsing gaat goed) maar het zoeken werkt niet?
Server error log:
-e: Use of uninitialized value in pattern match (m//) at
/etc/apache2//Apache/MP3.pm line 1843.
-e: Use of uninitialized value in split at /etc/apache2//Apache/MP3.pm
line 1693.
-e: Use of uninitialized value in pattern match (m//) at
/etc/apache2//Apache/MP3.pm line 1843.
-e: Use of uninitialized value in pattern match (m//) at
/etc/apache2//Apache/MP3.pm line 1843.
[error] handler Apache::MP3 didn't return a valid return value!
Line 1843 =
1841 # return true if streaming is allowed from this directory
1842 sub stream_ok {
1843 shift->r->dir_config('AllowStream') !~ /$NO/oi;
1844 }
Line 1693=
1690 # get fields to display in list of MP3 files
1691 sub fields {
1692 my $self = shift;
1693 my @f = split /\W+/,$self->r->dir_config('Fields');
- Zodra ik klik op de link naar de quick help summary, krijg ik de helppagina te zien, maar onderaan de pagina staat alsnog een error 500 code.
Ok dat is alles
-Wat zijn mijn beste opties om deze module werkende te krijgen? Misschien dat er mensen zijn met meer ervaring in perl die misschien veel voorkomende oorzaken van deze errors kennen?
-Moet ik andere versies installeren om deze module werkende te krijgen? Volgens de documentatie (man pages, en docs in de code verwerkt) zou het moeten werken.
Hopelijk kan iemand een hint geven.
Deus
Ps, laat het even weten als je de volledige httpd.conf, mod_perl-startup.pl of default-server.conf files wil zien, dan zet ik ze even op mijn webserver en post ik de url's.
1. Install apache version 2.0.49
2. Install mod_perl: 1.99_12_20040302
3. Install perl-mp3-info1.11-1.i586.rpm
4. Install apache-mp3-3.05
Ik heb sommige stukken code in MP3.pm moeten wijzigen om de module deels werkende te krijgen:
1. Het aanzetten van warnings zodat het debuggen makkelijker gaat:
use warnings;
no warnings 'redefine';
2. Code wijzigen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| my $NO = '^(no|false)$'; # regular expression
my $YES = '^(yes|true)$'; # regular expression
my $JSCRIPT=<<END;
function toggleAll(self,field) {
if(self.checked == true){
for (i = 0; i < field.length; i++)
field[i].checked = true ;
} else {
for (i = 0; i < field.length; i++)
field[i].checked = false ;
}
}
END
sub handler ($$) {
my $class = shift;
my $obj = $class->new(@_) or die "Can't create object: $!";
return $obj->run();
} |
gewijzigd naar dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| my $NO = '^(no|false)$'; # regular expression
my $YES = '^(yes|true)$'; # regular expression
my $JSCRIPT=<<END;
function toggleAll(self,field) {
if(self.checked == true){
for (i = 0; i < field.length; i++)
field[i].checked = true ;
} else {
for (i = 0; i < field.length; i++)
field[i].checked = false ;
}
}
END
sub handler : method {
my $class = shift;
my $obj = $class->new(@_) or die "Can't create object: $!";
return $obj->run();
} |
en:
code:
1
2
3
| y $self = shift;
my $dir = shift;
unless ($self->r->path_info){ |
gewijzigd naar dit:
code:
1
2
3
| y $self = shift;
my $dir = shift;
unless ($self->r->path_info eq ''){ |
Ok, hier zijn de problemen:
1. Het bladeren door muziek directories gaat prima maar…
- De zoekfunctie werkt niet. Zodra ik een nummer wil zoeken, krijg ik de volgende error:
Server error 500: Either the server is overloaded (nope) or there was
an error in a CGI script. Apache error log: [error] handler
Apache::MP3 didn't return a valid return value! Hoe komt het dat het meerendeel van de module prima werkt (streaming/browsing gaat goed) maar het zoeken werkt niet?
Server error log:
-e: Use of uninitialized value in pattern match (m//) at
/etc/apache2//Apache/MP3.pm line 1843.
-e: Use of uninitialized value in split at /etc/apache2//Apache/MP3.pm
line 1693.
-e: Use of uninitialized value in pattern match (m//) at
/etc/apache2//Apache/MP3.pm line 1843.
-e: Use of uninitialized value in pattern match (m//) at
/etc/apache2//Apache/MP3.pm line 1843.
[error] handler Apache::MP3 didn't return a valid return value!
Line 1843 =
1841 # return true if streaming is allowed from this directory
1842 sub stream_ok {
1843 shift->r->dir_config('AllowStream') !~ /$NO/oi;
1844 }
Line 1693=
1690 # get fields to display in list of MP3 files
1691 sub fields {
1692 my $self = shift;
1693 my @f = split /\W+/,$self->r->dir_config('Fields');
- Zodra ik klik op de link naar de quick help summary, krijg ik de helppagina te zien, maar onderaan de pagina staat alsnog een error 500 code.
Ok dat is alles
-Wat zijn mijn beste opties om deze module werkende te krijgen? Misschien dat er mensen zijn met meer ervaring in perl die misschien veel voorkomende oorzaken van deze errors kennen?
-Moet ik andere versies installeren om deze module werkende te krijgen? Volgens de documentatie (man pages, en docs in de code verwerkt) zou het moeten werken.
Hopelijk kan iemand een hint geven.
Deus
Ps, laat het even weten als je de volledige httpd.conf, mod_perl-startup.pl of default-server.conf files wil zien, dan zet ik ze even op mijn webserver en post ik de url's.