Probleme bei Script umsetzung

ulf123

Erfahrenes Mitglied
Hallo

ich bin seit kurzem dabei ein PHP script in PERL umzusetzten
doch leider bekomm ich das net so leicht hin vielleicht haben erfahrende
Scripter da ein paar tips

z.B. While Schleife , IF, daten in datei schreiben

so zusagen die vhost.conf wird gelöscht die daten werden neu zusammengestellt und dann wieder geschrieben

Meine PHP datei:

PHP:
<?php
############## MYSQL Verbindung
$dbHost = "localhost";
$dbUser = "user";
$dbPass = "pass";
$dbName = "database";
$connect = @mysql_connect($dbHost, $dbUser, $dbPass) or die("Konnte keine Verbindung zum Datenbankserver aufbauen!");
$selectDB = @mysql_select_db($dbName, $connect) or die("Konnte die Datenbank <b>$dbName</b> nicht auswählen!");

############## WHILE DB
$data="";
$abfrage = "SELECT * FROM domain";
$query=mysql_query($abfrage);
while($result=mysql_fetch_array($query)){

$abfrage2 = "SELECT * FROM server WHERE id ='".$result['server']."'";
$query2=mysql_query($abfrage2);
$result2=mysql_fetch_array($query2);


###################### VHOST ERSTELLEN
$data.="<VirtualHost ".$result2['ip'].":80>";
$data.="ServerName ".$result['domain']."";
$data.="ServerAlias  www.".$result['domain']."";
$data.="DocumentRoot ".$result2['rootdir']."/".$result['user']."/html/".$result['dir']."";
$data.="ScriptAlias /cgi-bin/ ".$result2['rootdir']."/".$result['user']."/html/cgi-bin/";
$data.="php_admin_value open_basedir ".$result2['rootdir']."/".$result['user']."/";
$data.="php_admin_value upload_tmp_dir ".$result2['rootdir']."/".$result['user']."/phptmp/";
if($result2['safe_mode']==1){
$data.="php_admin_flag safe_mode On";
}else{
$data.="php_admin_flag safe_mode Off";
}
$data.="</VirtualHost>";
}
####################### VHOST IN DATEI SCHREIBEN
$f=fopen("vhost.conf", "w");
fputs($f, $data);
fclose($f);
###################### RELOADE APACHE
shell_exec("/etc/init.d/apache2 reload");
?>


MfG Ulf
 
Code:
#!/usr/bin/perl

use strict;
use warnings;
use DBI;

############## MYSQL Verbindung
my $dbHost  = "localhost";
my $dbUser  = "user";
my $dbPass  = "pass";
my $dbName  = "database";
my $connect = DBI->connect("DBI:mysql:$dbName:$dbHost", $dbUser, $dbPass) or die $DBI::errstr();

############## WHILE DB
my $data    ="";
my $abfrage = "SELECT * FROM domain";

my $query   = $connect->prepare($abfrage) or die $connect->errstr();
$query->execute() or die $connect->errstr();

while(my $result = $query->fetchrow_hashref()){
  my $abfrage2 = "SELECT * FROM server WHERE id = ?";
  my $query2   = $connect->prepare($abfrage2) or die $connect->errstr();
  $query2->execute($result->{server});
  my $result2  = $query2->fetchrow_hashref();

  ###################### VHOST ERSTELLEN
  $data.="<VirtualHost ".$result2->{'ip'}.":80>";
  $data.="ServerName ".$result->{'domain'}."";  
  $data.="ServerAlias  www.".$result->{'domain'}."";
  $data.="DocumentRoot ".$result2->{'rootdir'}."/".$result->{'user'}."/html/".$result->{'dir'}."";
  $data.="ScriptAlias /cgi-bin/ ".$result2->{'rootdir'}."/".$result->{'user'}."/html/cgi-bin/";
  $data.="php_admin_value open_basedir ".$result2->{'rootdir'}."/".$result->{'user'}."/";
  $data.="php_admin_value upload_tmp_dir ".$result2->{'rootdir'}."/".$result->{'user'}."/phptmp/";
  if($result2->{'safe_mode'} == 1){
    $data.="php_admin_flag safe_mode On";
  }else{
    $data.="php_admin_flag safe_mode Off";
  }
  $data.="</VirtualHost>";
}

####################### VHOST IN DATEI SCHREIBEN
open(my $f,">","vhost.conf");
print $f $data;
close($f);
###################### RELOADE APACHE
exec("/etc/init.d/apache2 reload");

ungetestet!
 
Herzlichen Dank

waren noch ein paar kleine Fehler drin
aber es läuft jetzt super

Code:
PHP:
#!/usr/bin/perl

use strict;
use warnings;
use DBI;

############## MYSQL Verbindung
my $dbHost  = "localhost";
my $dbUser  = "user";
my $dbPass  = "pass";
my $dbName  = "database";
my $connect = DBI->connect("DBI:mysql:$dbName:$dbHost", $dbUser, $dbPass);

############## WHILE DB
my $data    ="";
my $abfrage = "SELECT * FROM domain";

my $query   = $connect->prepare($abfrage) or die $connect->errstr();
$query->execute() or die $connect->errstr();

while(my $result = $query->fetchrow_hashref()){
  my $abfrage2 = "SELECT * FROM server WHERE id = $result->{server}";
  my $query2   = $connect->prepare($abfrage2) or die $connect->errstr();
  $query2->execute();
  my $result2  = $query2->fetchrow_hashref();

  ###################### VHOST ERSTELLEN
  $data.="<VirtualHost ".$result2->{'ip'}.":80>\n";
  $data.="ServerName ".$result->{'domain'}."\n";  
  $data.="ServerAlias  www.".$result->{'domain'}."\n";
  $data.="DocumentRoot ".$result2->{'rootdir'}."/".$result->{'user'}."/html".$result->{'dir'}."\n";
  $data.="ScriptAlias /cgi-bin/ ".$result2->{'rootdir'}."/".$result->{'user'}."/html/cgi-bin/\n";
  $data.="php_admin_value open_basedir ".$result2->{'rootdir'}."/".$result->{'user'}."/\n";
  $data.="php_admin_value upload_tmp_dir ".$result2->{'rootdir'}."/".$result->{'user'}."/phptmp/\n";
  if($result->{'safe_mode'} == 1){
    $data.="php_admin_flag safe_mode On\n";
  }else{
    $data.="php_admin_flag safe_mode Off\n";
  }
  $data.="</VirtualHost>\n";
}

####################### VHOST IN DATEI SCHREIBEN
open(my $f,">","kcc_vhost.conf");
print $f $data;
close($f);
###################### RELOADE APACHE
exec("/etc/init.d/apache2 reload");
 
Zurück