Koristim lokalni web server instaliran kroz Bitnami Lampp stack.
cgi-bin i htdocs folderi su smešteni unutar apache2 foldera.
Perl, Ruby i Python kao CGI skripte (smeštene u cgi-bin) treba da pročitaju, malo izmene i prikažu sadržaj tekstualne datoteke koja je u stvari HTML sačuvan kao .txt. I, to radi, ali samo pod uslovom da je datoteka smeštena unutar cgi-bin direktorijuma.
Ono što me muči jeste kako zadati relativnu URL adresu dokumenta koji se sačuvan u htdocs direktorijumu?
Tekstualna datoteka sadrži i link koji upućuje na relativnu URL adresu i to je OK:
Code:
<a href='/test_site'>Back to START ...</a>
<a href='/test_site'>Back to START ...</a>
Ali, ali ... nikako mi ne uspeva da postavim relativnu adresu za tekstualnu datoteku koju skripte treba da otvore. (OK, znam da mogu da iz skripte dinamički generišem HTML, ali s obzirom da sve tri skripte treba da generišu slične strane mislila sam da pojednostavim postupak).
Da bi bilo jasnije o čemu se radi, ovo je tekstualna datoteka:
Code:
<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
* {
background-color: #121121;
color: #feffef;
font-family: 'Comic Sans MS', Andika, Arial, sans-serif;
}
.centar {
margin: 0 auto;
margin-top: 7%;
width: 50%;
height: 25%;
min-width: 500px;
min-height: 250px;
background-color: #232232;
color: #eeeeee;
text-align: center;
padding-top: 7%;
}
h1, h2 {
text-align: center;
background-color: inherit;
color: inherit;
}
h2 { font-weight: 300; }
.perl { color: #ceffce; }
.ruby { color: #ff0000; }
.python { color: #00ff44; }
nav {
width: inherit;
background-color: inherit;
text-align: right;
padding-right: 1%;
padding-bottom: 1.5%;
}
</style>
</head>
<body>
<div class="centar">
<h2></h2>
<h1>Hello, World!</h1>
</div>
<nav>
<a href='/test_site'>Back to START ...</a>
</nav>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
* {
background-color: #121121;
color: #feffef;
font-family: 'Comic Sans MS', Andika, Arial, sans-serif;
}
.centar {
margin: 0 auto;
margin-top: 7%;
width: 50%;
height: 25%;
min-width: 500px;
min-height: 250px;
background-color: #232232;
color: #eeeeee;
text-align: center;
padding-top: 7%;
}
h1, h2 {
text-align: center;
background-color: inherit;
color: inherit;
}
h2 { font-weight: 300; }
.perl { color: #ceffce; }
.ruby { color: #ff0000; }
.python { color: #00ff44; }
nav {
width: inherit;
background-color: inherit;
text-align: right;
padding-right: 1%;
padding-bottom: 1.5%;
}
</style>
</head>
<body>
<div class="centar">
<h2></h2>
<h1>Hello, World!</h1>
</div>
<nav>
<a href='/test_site'>Back to START ...</a>
</nav>
</body>
</html>
CSS je ubačen direktno jer nisam uspela da povežem sa eksternim .css fajlom, pa čak ni kada je u istom folderu.
Ovo je Perl skripta:
Code:
#!/usr/bin/perl
print("Content-Type: text/html;charset=utf-8\n\n");
open(FH,"<hello-world.txt"); #ovde treba da ide relativna URL adresa do localhost/test_site/my-files/
while(<FH>) {
if ( $_ eq "<title></title>\n") {
print("<title>Hello from Perl</title>");
}
elsif ( $_ eq "<h2></h2>\n") {
print("<h2 class='perl'>Perl CGI</h2>");
}
else {
print($_);
}
}
close(FH);
exit;
#!/usr/bin/perl
print("Content-Type: text/html;charset=utf-8\n\n");
open(FH,"<hello-world.txt"); #ovde treba da ide relativna URL adresa do localhost/test_site/my-files/
while(<FH>) {
if ( $_ eq "<title></title>\n") {
print("<title>Hello from Perl</title>");
}
elsif ( $_ eq "<h2></h2>\n") {
print("<h2 class='perl'>Perl CGI</h2>");
}
else {
print($_);
}
}
close(FH);
exit;
(tema je relativna URL adresa, skripta nije 100% OK - nedostaju sigurnosne mere).
Kako sakriti ili izmeniti deo URL adrese kroz .htaccess fajl. U ovom slučaju htela bih da sakrijem da je skripta pozvana iz cgi-bin foldera.
Da li je obavezno da Perl, Ruby i Python skripte budu čuvane unutar cgi-bin direktorijuma? Kod mene rade i kada su unutar htdocs-a.
Dopuna:
Problemi sa URL adresama su rešeni, pa ako nekome zatreba:
Perl:
Code:
open(FH,"<../../my-files/hello-world.txt");
open(FH,"<../../my-files/hello-world.txt");
Python:
Code:
for line in open("../../my-files/hello-world.txt","r"):
for line in open("../../my-files/hello-world.txt","r"):
Ruby:
Code:
AppRoot = File.expand_path('../../my-files',File.dirname(__FILE__))
File.open(File.join(AppRoot, "hello-world.txt"),"r") do |fh|
AppRoot = File.expand_path('../../my-files',File.dirname(__FILE__))
File.open(File.join(AppRoot, "hello-world.txt"),"r") do |fh|
[Ovu poruku je menjao EmmaR dana 03.10.2017. u 12:48 GMT+1]
ER