[Bioperl-l] I can't access clustalw from my cgi perl program...
vdar at yorku.ca
vdar at yorku.ca
Wed May 21 20:34:05 UTC 2008
How can I find where bioperl is installed?
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/';
>
> Also, it's a good practice to use taint mode for CGI scripts:
>
> #!/usr/bin/perl -wT
>
> Hope this helps.
>
> Regards,
> Mauricio.
>
> vdar at yorku.ca wrote:
> > Hi,
> >
> > This is my .bashrc file and perl can see bioperl because my commandline
> programs
> > work fine, the problem is with web-based programs
> >
> > ##############################################
> > # .bashrc
> >
> > # User specific aliases and functions
> >
> > # Source global definitions
> > if [ -f /etc/bashrc ]; then
> > . /etc/bashrc
> >
> > fi
> > export PERL5LIB="/opt/rocks/lib/perl5/site_perl/5.8.8"
> >
> >
> > ################################################
> >
> > Please let me know if I need to change it now...
> >
> > Thanks
> > Nisa
> >
> >
> > Quoting Thomas Sharpton <sharpton at berkeley.edu>:
> >
> >> Hi Nisa,
> >>
> >> Looks to me like you need to add BioPerl to your PERL5LIB environmental
> >> variable. Until you set this up, Perl doesn't know where on your
> >> machine to find the Bioperl code. On a UNIX/Linux/Mac OSX based system,
> >> the fix is as follows:
> >>
> >> From http://www.bioperl.org/wiki/Using_Subversion :
> >>
> >> Tell perl where to find BioPerl (assuming you checked out the code in
> >> $HOME/src; set this in your .bash_profile, .profile, or .cshrc):
> >>
> >> bash: $ export PERL5LIB="$HOME/src/bioperl-live:$PERL5LIB"
> >> tcsh: $ setenv PERL5LIB "$HOME/src/bioperl-live:$PERL5LIB"
> >>
> >> On a windows machine, you can either environmental variables through
> >> autoexec.bat or via the Control Panel.
> >>
> >> Feel free to back channel me if you need help.
> >>
> >> Cheers,
> >> Tom
> >>
> >>
> >> nisa_dar wrote:
> >>> Hi,
> >>>
> >>> My multiple alignment program works fine from command line but when i put
> >>> the
> >>> same piece of code in my cgi perl program, it gives me the same error,
> >> which
> >>> is,
> >>>
> >>> Can't locate Bio/Tools/Run/Alignment/Clustalw.pm in @INC (@INC contains:
> >>> /export/share/iNquiry/perl/lib/5.8.5/x86_64-linux-thread-multi
> >>> /export/share/iNquiry/perl/lib/5.8.5
> >>> /export/share/iNquiry/perl/lib/x86_64-linux-thread-multi
> >>> /export/share/iNquiry/perl/lib/5.8.4 /export/share/iNquiry/perl/lib/5.8.3
> >>> /export/share/iNquiry/perl/lib/5.8.2 /export/share/iNquiry/perl/lib/5.8.1
> >>> /export/share/iNquiry/perl/lib/5.8.0 /export/share/iNquiry/perl/lib
> >>> /usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/5.8.5
> >>> /usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi
> >>> /usr/lib64/perl5/site_perl/5.8.4/x86_64-linux-thread-multi
> >>> /usr/lib64/perl5/site_perl/5.8.3/x86_64-linux-thread-multi
> >>> /usr/lib64/perl5/site_perl/5.8.2/x86_64-linux-thread-multi
> >>> /usr/lib64/perl5/site_perl/5.8.1/x86_64-linux-thread-multi
> >>> /usr/lib64/perl5/site_perl/5.8.0/x86_64-linux-thread-multi
> >>> /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl/5.8.4
> >>> /usr/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/site_perl/5.8.2
> >>> /usr/lib/perl5/site_perl/5.8.1 /usr/lib/perl5/site_perl/5.8.0
> >>> /usr/lib/perl5/site_perl
> >>> /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi
> >>> /usr/lib64/perl5/vendor_perl/5.8.4/x86_64-linux-thread-multi
> >>> /usr/lib64/perl5/vendor_perl/5.8.3/x86_64-linux-thread-multi
> >>> /usr/lib64/perl5/vendor_perl/5.8.2/x86_64-linux-thread-multi
> >>> /usr/lib64/perl5/vendor_perl/5.8.1/x86_64-linux-thread-multi
> >>> /usr/lib64/perl5/vendor_perl/5.8.0/x86_64-linux-thread-multi
> >>> /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.4
> >>> /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl/5.8.2
> >>> /usr/lib/perl5/vendor_perl/5.8.1 /usr/lib/perl5/vendor_perl/5.8.0
> >>> /usr/lib/perl5/vendor_perl .) at
> >>> /export/share/iNquiry/www/cgi-bin/bipod/nisa/snpfinder.cgi line 14.
> >>> BEGIN failed--compilation aborted at
> >>> /export/share/iNquiry/www/cgi-bin/bipod/nisa/snpfinder.cgi line 14.
> >>>
> >>>
> >>>
> >>> Here is my cgi perl program
> >>>
> >>> #!/usr/bin/perl -w
> >>>
> >>> use strict;
> >>> use CGI qw(:standard);
> >>> use CGI::Carp qw/fatalsToBrowser/;
> >>> use Bio::SeqIO;
> >>> use Bio::Align::AlignI;
> >>> use Bio::AlignIO;
> >>> use Bio::AlignIO::msf;
> >>> use Bio::SimpleAlign;
> >>> use Bio::PrimarySeq;
> >>> use Bio::Tools::Run::Alignment::Clustalw;
> >>> use Bio::PrimarySeqI;
> >>> use Bio::Root::IO;
> >>> use Bio::Seq;
> >>> use Bio::TreeIO;
> >>> use Bio::Root::Root Bio::Tools::Run::WrapperBase;
> >>> use Bio::LocatableSeq;
> >>>
> >>>
> >>> BEGIN {
> >>> $ENV{CLUSTALDIR} = '/opt/Bio/bin/clustalw';
> >>> }
> >>> print"Content-type: text/html\n\n";
> >>>
> >>>
> >>> if (param()){ #condition if user supplied some data
> >>> my $new_seq=param("sequence"); #to store sequence from text box of form
> >>> my $selection=param("size");#to store drop down menu selection for
> >>> translation type
> >>> my $file1=param("uploadfile");#variable for name of the file
> >>> my $address=param("email");#variable to hold e.mail address
> >>>
> >>> if ($file1=~/.+/) {#test condition, if user supplied a file
> >>>
> >>> my $R_FH = upload("uploadfile");#get file handle
> >>>
> >>>
> >>>
> >>>
> >>> 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);
> >>> }
> >>>
> >>> close $R_FH;
> >>> open FH, "out.aln.pfam" || die "Alignment file doesn't exist\n";
> >>> while(<FH>){
> >>>
> >>> print $_,"\n";
> >>> }
> >>> close FH;
> >>>
> >>> #To send results through e.mail
> >>> $report=~s/<br \/>/\n/g;#change new line character
> >>> $report=~s/(<.+?>)//g;#remove html tags
> >>> $report=~s/( )/ /g;#change space character
> >>> open(MAIL, "|/usr/sbin/sendmail -t") or die"can't compose an e.mail";
> >>> print MAIL "To:$address\n";
> >>> print MAIL "From: nisa\n";
> >>> print MAIL "Subject: results of $file1\n";
> >>> print MAIL "\n$report\n";
> >>> close(MAIL);#close mail
> >>>
> >>>
> >>> }else{#error message if no file name is entered
> >>> print "<html><head><h3>Error: </h3></head><body>You did not enter a
> file
> >>> name,please upload a file<br /></body></html>";
> >>>
> >>> }
> >>>
> >>> }
> >>>
> >>> Please let me know what should I do, because clustalw is there and my
> other
> >>> programs (non web-based) are working.
> >>>
> >>> Thanks
> >>> Nisa
> >>>
> >>
> >> --
> >> Thomas Sharpton
> >> PhD Candidate - UC Berkeley
> >> Search smarter: www.siphs.com
> >>
> >>
> >
> >
> > _______________________________________________
> > Bioperl-l mailing list
> > Bioperl-l at lists.open-bio.org
> > http://lists.open-bio.org/mailman/listinfo/bioperl-l
> >
>
> --
> 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
>
More information about the Bioperl-l
mailing list