Page 1 of 1

str_ireplace php4 replacement

Posted: Sun Jan 14, 2007 5:30 pm
by Dirge of Cerberus

Code: Select all

<?PHP

//    PHP FTP Backup
//    By Jasen Lawrence
//    http://neorush.wisertechnologies.com
//    webmaster@wisertechnologies.com 


error_reporting(0);
$days_to_keep_logs = 7;


$curr_time = time();
$days_to_keep_logs = date("Y-m-d",$curr_time - ((($days_to_keep_logs*24)*60)*60));

    echo "Running backup for site ".$main_vars["site_name"]."<BR>\n";
    $mysql_host = $main_vars["mysql_host"];
    $mysql_username = $main_vars["mysql_username"];
    $mysql_password = $main_vars["mysql_password"];
    $ftp_name = $main_vars["site_name"];
    $ftp_host = $main_vars["ftp_host"];
    $ftp_username = $main_vars["ftp_username"];
    $ftp_password = $main_vars["ftp_password"];
    $ftp_start_dir = $main_vars["ftp_start_dir"];

    //*****FTP BACKUP PORTION*****\\

    $curr_date = date("Y-m-d");
    $backup_dir = "/usr/local/apache2/htdocs/backup/";
    mkdir($backup_dir."temp");
    mkdir($backup_dir.$curr_date);
    $backup_dir = "/usr/local/apache2/htdocs/backup/temp/";

    
    $ftp_mode = FTP_ASCII;  //either FTP_BINARY or FTP_ASCII
    $directory_list = Array();
    
    // set up basic connection
    $ftp_connection = ftp_connect($ftp_host);
    
    // login with username and password
    $login_result = ftp_login($ftp_connection, $ftp_username, $ftp_password);
    
    // check connection
    if ((!$ftp_connection) || (!$login_result)){
        echo "FTP connection has failed!<BR>\n";
        echo "Attempted to connect to ".$ftp_host." for user ".$ftp_username.".<BR>\n";
    }
    else {
        echo "Connected to $ftp_host, for user $ftp_username";
    }
    
    echo "PWD: " . ftp_pwd($ftp_connection) . "<BR>\n";
    
        //try to change the directory to defalut $ftp_start_dir
    if (ftp_chdir($ftp_connection, $ftp_start_dir)) {
        
        $curr_dir = ftp_pwd($ftp_connection);
        echo "Current directory is now: ".$curr_dir."<BR>\n";
        array_push($directory_list, $curr_dir);
        
    }
    else {
        echo "Couldn't change directory to ".$ftp_start_dir." on remote server.<BR>\n";
    }
    
    for($j = 0; ISSET($directory_list[$j]); $j++){
    
        if (ftp_chdir($ftp_connection, $directory_list[$j])) {
    
            $curr_dir = ftp_pwd($ftp_connection);
            echo "Current directory is now: ".$curr_dir."<BR>\n";
        }
        else {
            echo "Could not change directory to: ".$directory_list[$j];
        }
    
        $curr_file_list = ftp_nlist($ftp_connection, ".");
        $curr_dir = $directory_list[$j];
        
        for($i = 0; ISSET($curr_file_list[$i]); ++$i){
        
            $to_save_to = "/".str_ireplace($ftp_start_dir,"",$curr_dir)."/";
            $get_file = ftp_get($ftp_connection, $backup_dir.$to_save_to.$curr_file_list[$i],  $curr_dir."/".$curr_file_list[$i], $ftp_mode);
        
            if(!$get_file){
                echo "Creating Directory: ".$curr_file_list[$i]."<BR>\n";
                mkdir($backup_dir.$to_save_to.$curr_file_list[$i]);
    
                if(!is_dir($backup_dir.$to_save_to.$curr_file_list[$i])){
                    echo "Fatal Error: Could not create directory ".$backup_dir.$to_save_to.$curr_file_list[$i];
                }
                else{
                    array_push($directory_list, $curr_dir."/".$curr_file_list[$i]);
                }
                
            }
            else{
                if(!file_exists($backup_dir.$to_save_to.$curr_file_list[$i])){
                    echo "File ".$backup_dir.$curr_file_list[$i]." does not exist. Trying to download again.<BR>\n";
                    $get_file = ftp_get($ftp_connection, $backup_dir.$to_save_to.$curr_file_list[$i],  $curr_dir."/".$curr_file_list[$i], $ftp_mode);
        
                    if(!file_exists($backup_dir.$to_save_to.$curr_file_list[$i])){
                        echo "Second try for ".$curr_file_list[$i]." failed.<BR>\n";                
                    }
                }
                else{
                    echo "Downloaded file ".$curr_file_list[$i]."<BR>\n";
                }
            }
        }
    
    }
    
    ftp_close($ftp_connection);
    
    if($ftp_connection){
        echo "Error: Could not close FTP Connection to ".$ftp_host." exiting anyway.<BR>\n";
    }
    else{
        echo "Connection to ".$ftp_host.", for user ".$ftp_username." was closed.<BR>\n";
    }

    //***** FTP zip and file removal *****\\

    $to_zip = substr($backup_dir,0,-5);
    
    echo "Creating zip file...<BR>\n";
    system("tar -czf ".$to_zip.$curr_date."/".$ftp_name."-site-".$curr_date.".tar.gz ".$backup_dir);

    echo "Removing temporary files...<BR>\n";
    system("rm -rf ".$backup_dir);



    //****MYSQL BACKUP PORTION*****\\

    if($mysql_host!=""){

        echo "\nGetting mysql information...<BR>\n";

        mkdir($backup_dir);
        
        $connect = mysql_connect($mysql_host, $mysql_username, $mysql_password);
        $db_list = mysql_list_dbs($connect);
    
        while ($row = mysql_fetch_object($db_list)) {
    
            echo "Selecting database ".$row->Database."<BR>\n";
            $db_name = $row->Database;
            mysql_select_db($row->Database). "\n<BR>";
    
            //create sql file
            $sql_filename = $backup_dir.$curr_date."-db-".$db_name.".sql";
            system("echo ### PHP BACKUP Version 1.0 ####\n\n\n >> ".$sql_filename);
            $file = fopen($sql_filename,'a');
    
            echo "\nGetting table names.<BR>\n";
    
            $result = mysql_list_tables($row->Database);
            
            if(!$result){
                echo "Database Error, could not list tables<BR>\n";
                echo 'MySQL Error: ' . mysql_error();
            }
            
            while ($row = mysql_fetch_row($result)) {
                
                echo "\nGathering information from table ".$row[0]."<BR>\n";
    
                fwrite($file, "### Table ".$row[0]." ###\n");
    
                $q = "select * from `".$row[0]."`";            
                $export = mysql_query($q);
                $fields = mysql_num_fields($export);
    
                    //build insert statement
                $insert_start = "INSERT INTO `".$row[0]."` (";
    
                for ($i = 0; $i < $fields; $i++) {
                   $insert_start .= "'".mysql_field_name($export, $i)."',";
                }
                    //trim last comma
                $insert_start = substr($insert_start,0,-1);
                $insert_start .= ") VALUES (";
            
                for($i = 0; $export_line = mysql_fetch_array($export); $i++){
    
                    $final_insert = $insert_start;
                    $j = 0;
                    while(ISSET($export_line[$j])){
                        $final_insert .= "'".$export_line[$j]."',";
                        $j++;
                    }
                        //trim last comma
                    $final_insert = substr($final_insert,0,-1);
                    $final_insert .= ");";
    
                    echo " .";
                    fwrite($file, $final_insert."\n");
                }
                
            }
            fclose($file);
    
        }
    
        //***** MySQL zip and file removal *****\\
    
        $to_zip = substr($backup_dir,0,-5);
        
        echo "Creating zip file...<BR>\n";
        system("tar -czf ".$to_zip.$curr_date."/".$ftp_name."-db-".$curr_date.".tar.gz ".$backup_dir);
    
        echo "Removing temporary files...<BR>\n";
        system("rm -rf ".$backup_dir);
    }
        
    $old_logs = substr($backup_dir,0,-5);
    echo "Removing old log files...<BR>\n";
    $old_log_path = $old_logs.$days_to_keep_logs."/";
    echo "Checking for old logs ".$old_log_path."<BR>\n";
    if(is_dir($old_log_path)){
        echo "Removing ".$old_log_path."<BR>\n";
        system("rm -rf ".$old_log_path);
    }
    else{
        echo "no old logs to delete<BR>\n";
    }
?>
How do I make this php4 compatible? It gives me this error:

Code: Select all

Fatal error: Call to undefined function: str_ireplace() in /home/animesto/public_html/backup.php on line 91
Which is pointing to this snippet of code:

Code: Select all

$to_save_to = "/".str_ireplace($ftp_start_dir,"",$curr_dir)."/";
When I looked it up, it turns out 'str_ireplace()' is new to PHP5. D=

Posted: Sun Jan 14, 2007 5:43 pm
by feyd
Install the PEAR::Compat library.