Sziasztok!
Tudom ez egy nagyon láma kérdés, de sehogy se bírok rűjönni mi a baj. A helyzet az hogy volna egy cgi-s perl-es webalkalmazás (nevezett sql-ledger) és ezt szeretném beüzemelni szerény kis apache2-es serveremen. Már fent van minden ami a perlhez kell, meg a cgi-hez is fent van elvileg a fastcgi modul, de ennek ellenére semmi nem történik csak letöltést ajánl fel nekem amikor rá kellene lépnie egy .pl kiterjesztésű filera. Bent van a confban hogy "AddHandler cgi-script .pl", de semmi nem történik. Mit lehet ezzel kezdeni?
- 2500 megtekintés
Hozzászólások
Kell egy
Options ExecCGI
is a könyvtárra:
<Directory /usr/lib/cgi-bin/>
...
Options ExecCGI
...
</Directory>
- A hozzászóláshoz be kell jelentkezni
Bele tettem, de még mindig nem megy. Egyébként ahol hivatkozok arra a könyvtárra ahol a maga a site van ott is benne van. De még mindig csak letölteni ajánlja fel.
- A hozzászóláshoz be kell jelentkezni
És mit tölt le? A perl fájl tartalmát vagy azt a kimenetet, amit látni szeretnél?
Ha a kimenetet, akkor a script lefut viszont valószínűleg rossz headert küld a böngészőnek, ezért akarja letölteni.
Esetleg apache logban nincs valami használható info?
- A hozzászóláshoz be kell jelentkezni
az sem árt, ha a webszerver usere tudja futtatni a scriptet.
Ja persze triviális, de gondolom újraindítottad az Apache-ot, miután módosítottad a konfigot. (Ne haragudj, nem akarlak hülyének nézni, de időnként az ember évtizedes gyakorlattal is beszophat egy "nincsbedugva a cucc" problémát)
- A hozzászóláshoz be kell jelentkezni
Persze, újra indítottam az apache-t de igazad van néha az ember hajlamos elsiklani apróságok felett.
Egyébként a perl scriptet tölti le, tehát nem a kimenetet. Szóval nem fut le a script.
- A hozzászóláshoz be kell jelentkezni
Valószínűleg az "AddHandler cgi-script .pl" hiányzik az apache configból, vagy nincs engedélyezve a cgi modul.
Ami elől menekülnek, az után szaladnak.
- A hozzászóláshoz be kell jelentkezni
Baromi figyelmesen olvasol:
"Bent van a confban hogy "AddHandler cgi-script .pl", de semmi nem történik"
- A hozzászóláshoz be kell jelentkezni
Egyébként olyannyira érdekes a dolog, hogy ha megnézem a szerver üzenetet alul, amikor kilistáztatok egy könyyvtárat akkor még fel is sorolja a telepített modulok között a perl-t is. Szóval elvileg be is van töltve csak éppen még valamiért nem tudja társítani hozzá a .pl kiterjesztést.
- A hozzászóláshoz be kell jelentkezni
Próbáld meg ezt.
< Files *.pl >
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options +ExecCGI
< /Files >
- A hozzászóláshoz be kell jelentkezni
Hálás köszönet!
Ez megoldotta.
- A hozzászóláshoz be kell jelentkezni
Valami kis probléma még mindig akad. Eddig azt hittem, hogy más valami miatt kapok minden script futtatásakor "500 Internal Server Error" üzenetet. De rá kellett jönnöm, hogy valami a perl-ben okozza.
Szóval lehet, hogy valami konfiguráció még kell a perl-nek, vagy az apache-nak?
- A hozzászóláshoz be kell jelentkezni
Milyen disztro alatt próbálod?
(nem olvastam végig a topicod)
Debian alatt ott van *.deb.ben, szinte semmit sem kell csinálni hogy működjön!
Ez igaz gentoo alatt is, igaz ott nincs a portage fában, de ennek ellenére nem sok gondom volt vele!
Olvasd el a sql-ledger doksiját!
Lehet valamit kihagyhattál! :)
----------------------------------------------------------------
"Értem én hogy villanymotor, de mi hajtja!?
- A hozzászóláshoz be kell jelentkezni
Ubuntut használok, tehát lényegében debian. :)
Igen, olvasgatom a doksikat és elvileg én mindent megcsináltam.
Az apche error.log-ban ez áll:
[error] Can't locate bin/mozilla/login.pl in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl . /etc/apache2) at /usr/share/sql-ledger/login.pl line 120.\n
Perl programozásban nem vagyok jártas, de ahogy én értelmeztem az említett sort:
require "bin/$form{terminal}/$script";
szerintem itt van valami hiba és a require generálja a hibát. De nem találtam a config fileokban sem semmi ilyen változót ahol ezt állítani tudnám. Szóval nem értem. az sql-ledger-nek a doksija semmiben nem tér ki ilyen jellegű dolgokra. Amúgy néha a 92. sorra hivatkozik és az is egy require ami egy másik ugyanilyen scriptet akar betölteni. A vicc csak az, hogy ezek a scriptek léteznek és olvashatóak is. Akkor vajon miért nem találja meg?
- A hozzászóláshoz be kell jelentkezni
Minden perl függőség fent van?
Kifelejtettem, hogy anno uhu-1.0 alatt kezdtem sql-ledger-t és ot is ment!
Pedig apache-t(1.3.x) pgsql-t és néhány perl(perlDBI, DBD-Pg) csomagot is forrásból tettem fel.
Apache httpd.conf-ba "include"-oltad a sql-ledger_httpd.conf fájlt?
Gentoo alatt csak ez kellett megcsinálnom és persze az adatbázist létrehozni!
----------------------------------------------------------------
"Értem én hogy villanymotor, de mi hajtja!?
- A hozzászóláshoz be kell jelentkezni
A perl felrakásakor nem hiányolt semmit. Illetve mindent telepített.
A perl dbi csomagok közül feltettem mindent ami kicsit is kapcsolódhat a postgresqlhez meg általában magához a perlhez. A libdbd-pg-perl, libdbd-anydata-perl, libdbd-cvs-perl szintén fent vannak.
Az sql-ledger_httpd.conf file tartalma benne van a default hostnak a configjában.
Az adatbázist még nem készítettem el, de arra csak nem ez az üzenet dukálna. Remélem nem derül ki, hogy valami 64bites támogatás hiányzik hozzá, hogy menjen, uganis 64bites rendszer fut.
- A hozzászóláshoz be kell jelentkezni
Nem. a hibaüziből egyértelműen az derül ki, hogy egy fájlt hiányol. meg kellene nézni, hogy a error.log-ba panaszolt file megvan-e az sql-ledger mappájába.
- A hozzászóláshoz be kell jelentkezni
Hibaüzi:
Can't locate bin/mozilla/login.pl in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl . /etc/apache2) at /usr/share/sql-ledger/login.pl line 92.\n
File: /usr/share/sql-ledger/bin/mozilla/login.pl létezik.
httpd.conf erre vonatkozó része: (hátha segít)
Alias /sql-ledger/ /usr/share/sql-ledger/
AddHandler cgi-script .pl
Options ExecCGI Includes FollowSymlinks
Order Deny,Allow
Deny from All
- A hozzászóláshoz be kell jelentkezni
Háhh kiszedtem a httpd.confból ezt:
(Files *.pl)
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options +ExecCGI
(/Files)
Most elindult. Már csak az adatbázis létrehozásának kell utána néznem. Nagyon Köszönöm mindenkinek a segítséget!
- A hozzászóláshoz be kell jelentkezni
Még egy utolsó kérdés. :D Szerencsére a postgresql-lel is először foglalkozom.
Szóval az miért lehet, hogy:
psql -U template1
parancs kiadása után tudok kapcsolódni a megadott felhasználó névvel. De ha az sql ledger admin felületén adom meg ugyanazt a felhasználó nvet vagy pg Admin III -ban akkor is azt írja hogy nem tud kapcsolódni a serverhez. Pedig én megadom, hogy localhost meg, hogy 5432-es port.
- A hozzászóláshoz be kell jelentkezni
Megvan! Ha nem írok be semmit se hostot se portot se semmit akkor megy.
Mégegyszer köszi mindenkinek a segítséget!
- A hozzászóláshoz be kell jelentkezni
Sziasztok,
Hasonló problémám van: PHP-t szeretnék futtatni CGI-ként apache2-n. Modulként megy, de nekem CGI kellene. Nem jövök rá mit kell beállítani neki.
--
CCC3
- A hozzászóláshoz be kell jelentkezni
chmod a+x scriptecske.php megvolt?
CGI mappában van?
Az elején szerepel az első sorban ilyesmi:
#!/usr/bin/php
?
- A hozzászóláshoz be kell jelentkezni
Tehát a feladat: Hogyan lehet Linux/Apache-on a PHP-t CGI-ként működtetni? 1 nap olvasgatás és próbálgatás után megvan. Tanulságképpen leírom, mi kell, mindössze ennyi:
A mods-available directoryból el kell vinni a php5.load és php5.conf filéket (ezzel a mod-php le van tiltva).
Az apache2.conf-ba beírni két sort.
AddHandler php-script .php
Action php-script /cgi-bin/php
Kész.
Az Action hatására az Apache átirányít: A php filékre elindítja a php interpretert, de előzőleg lekészít néhány REDIRECT_* env változót, amiből az interpreter kitalálhatja, hogy mi a bemenet, a query string, stb. Ehhez az kell, hogy a php force-cgi-redirect opcióval legyen fordítva (úgy van).
A hagyományos CGI-s megoldások szándékosan le vannak tiltva. Pl. az átirányított URL közvetlen böngészőbe írása, a php interpreterenek megadott parancssori argumentumok nem működnek.
Nyilvánvalóan rossz volna a php filébe beírni #!/usr/lib/cgi-bin/php (és +x flaget adni rá), mert a php filék nem változhatnak aszerint, hogy winen vagy unixon, CGI-vel vagy mod-php-val vannak-e feldolgozva.
--
CCC3
- A hozzászóláshoz be kell jelentkezni