[Bioperl-l] I can't access clustalw from my cgi perl program...

nisa_dar vdar at yorku.ca
Thu May 22 18:12:49 UTC 2008


I have seen in my error log file that output file is not being written bcs of
no permissions

[Thu May 22 14:07:35 2008] [error] [client xxxxxxxxxx] MSG: Could not open
>/home/vdar/in.aln.pfam: Permission denied, referer:
https://capsella.ccs.yorku.ca/nisa/snp_finder.html

Does any one know how can i give permissions to others so that my program
can write this file in my home directory? 
All I knew was chmod 777 ... but in this case this doesn't work...

thanks







Mauricio Herrera Cuadra-3 wrote:
> 
> A couple of things inlined:
> 
> vdar at yorku.ca wrote:
>> Yes, I've seen in that directory, but it doesn't exist. Another wierd
>> thing
>> which is being happening is that If I make this output file manually in
>> that
>> directory, it is read by the following code and printed on screen
>> 
>> 
>> if ("out.aln.pfam"){
>> 	open FH, "out.aln.pfam" || die "Alignment file doesn't exist</br>";
>> 	while(<FH>){
>> 
>> 	print $_,"</br>";
>> 	}
>> 	close FH;
>> }
>> 
>> only when this code is not followed by the original code. When its
>> followed by
>> the original code i.e.
> 
> Yeah, this works because you're placing the file there by hand, so it's 
> found by the open() function, not the 'if ("out.aln.pfam")' statement 
> (which, btw, always evaluates as TRUE). Something simpler like this will 
> work as you expect and it's easier to understand:
> 
> open FH, "out.aln.pfam" or die "Alignment file doesn't exist<br />";
> while (<FH>) {
>      print $_, "<br />";
> }
> close FH;
> 
>> my  $in  = Bio::AlignIO->new(-file   => $file1 ,
>> 				-format => 'fasta');
>> 	my $out = Bio::AlignIO->new(-file   => ">out.aln.pfam" ,
>> 				-format => 'pfam');
>> 
>> 
>> 
>> 	while ( my $aln1 = $in->next_aln() ) {
>> 		$out->write_aln($aln1);
>> 	}
>> 
>> 
>> 
>> 	if ("out.aln.pfam"){
>> 	open FH, "out.aln.pfam" || die "Alignment file doesn't exist</br>";
>> 	while(<FH>){
>> 
>> 	print $_,"</br>";
>> 	}
>> 	close FH;
>> 	}
>> 
>> Nothing is printed on screen, while it stays there in the directory. I
>> have
>> changed the name of output file in this code but new file is not produced
>> by
>> this program. Does anyone know what is going on?
> 
> Apparently, this is a problem with permissions. Maybe your script lives 
> under some directory (i.e. your home directory) which is owned by a 
> different user than the one who is actually running the CGI interface 
> (e.g. apache, nobody) ?? Check your Apache logs from another shell 
> screen to see what is really happening while you run your script:
> 
> $ tail -f /path/to/your/apache/error.log
> 
> In a CGI environment, all Perl messages/warnings are printed to the 
> webserver's log, not the standard output (your shell).
> 
> Mauricio.
> 
>> thanks
>> nisa
>> 
>> 
>> Quoting Mauricio Herrera Cuadra <arareko at campus.iztacala.unam.mx>:
>> 
>>> You're using '>out.aln.pfam' as the full path for the output file. Most
>>> probably, the file is being produced but in the same location where the
>>> CGI script lives. Check inside the same directory where you installed
>>> your script.
>>>
>>>  Mauricio.
>>>
>>> vdar at yorku.ca wrote:
>>>> ok thanks, its not giving me any error now, but its not doing anything
>>>> too,
>>> the
>>>> following code works from commandline but not from my cgi script. I
>>>> have
>>> added
>>>> the path to bioperl and have tried everything else that I could find...
>>>>
>>>>         my  $in  = Bio::AlignIO->new(-file   => $inputfilename ,
>>>> 				-format => 'fasta');
>>>> 	my $out = Bio::AlignIO->new(-file   => ">out.aln.pfam" ,
>>>> 				-format => 'pfam');
>>>>
>>>>
>>>>
>>>> 	while ( my $aln1 = $in->next_aln() ) {
>>>> 		$out->write_aln($aln1);
>>>> 	}
>>>>
>>>>
>>>> output file is not produced. what should I do?
>>>>
>>>> thanks
>>>> nisa
>>>>
>>>>
>>>> Quoting Sendu Bala <bix at sendu.me.uk>:
>>>>
>>>>> vdar at yorku.ca wrote:
>>>>>> How can I find where bioperl is installed?
>>>>> You already know where it's installed. See below.
>>>>>
>>>>>
>>>>>> Quoting Mauricio Herrera Cuadra <arareko at campus.iztacala.unam.mx>:
>>>>>>
>>>>>>> Hi Nisa,
>>>>>>>
>>>>>>> CGI scripts are generally run by a different user than you, and
>>>>>>> which
>>>>>>> user (e.g. apache, nobody) will depend on the platform you're
>>>>>>> running
>>>>>>> the script on, thus the environment variables you currently have for
>>>>>>> your login shell are not being inherited to the web interface. The
>>>>>>> best
>>>>>>> workaround for this is to add a 'use lib' pragma at the top of your
>>>>>>> CGI
>>>>>>> script:
>>>>>>>
>>>>>>> use lib '/path/to/your/bioperl/installation/';
>>>>> [...]
>>>>>>> vdar at yorku.ca wrote:
>>>>>>>> export PERL5LIB="/opt/rocks/lib/perl5/site_perl/5.8.8"
>>>>
>>> --
>>> MAURICIO HERRERA CUADRA
>>> arareko at campus.iztacala.unam.mx
>>> Laboratorio de Genética
>>> Unidad de Morfofisiología y Función
>>> Facultad de Estudios Superiores Iztacala, UNAM
>>>
>> 
>> 
> 
> -- 
> MAURICIO HERRERA CUADRA
> arareko at campus.iztacala.unam.mx
> Laboratorio de Genética
> Unidad de Morfofisiología y Función
> Facultad de Estudios Superiores Iztacala, UNAM
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/bioperl-l
> 

-- 
View this message in context: http://www.nabble.com/I-can%27t-access-clustalw-from-my-cgi-perl-program...-tp17367665p17410291.html
Sent from the Perl - Bioperl-L mailing list archive at Nabble.com.





More information about the Bioperl-l mailing list