Как запустить PHP-скрипт, который загружает файлы журнала в базу данных Oracle на Windows Server 2003 R2

У меня есть скрипт php, который подключается к базе данных oracle(12c) и загружает данные файла журнала в таблицу базы данных. У меня очень старая 32-разрядная машина с Windows (Windows Server 2003 R2), поэтому я использую "php-5.4.0-nts-Win32-VC9-x86". Может кто-нибудь, пожалуйста, предложить, какие изменения конфигурации мне нужно сделать, чтобы это не выдало мне ошибку:

Вызов неопределенной функции oci_connect()

Исходный код:

class logAgent
{
    const CONFIG_FILENAME = "data_config.ini";

    private $_dbConn;
    private $_config;


    function __construct()
    {
        $this->_loadConfig();


        $this->_dbConn = oci_connect($this->_config['db_usrnm'],
            $this->_config['db_pwd'],
            $this->_config['hostnm_sid']);
    }

    public function uploadLogs(){

        //Array of all the files present in the directory
        $f = fopen($this->_config['uploadedRegistry'], 'r');
        $contents = [];
        while (FALSE !== ($row = fgetcsv($f, 1000, $this->_config['filenameTimeSeparator']))){
            $contents[] = $row[0];
        }

        $result = array_diff(scandir($this->_config['logspath']), ['.','..'], $contents);
        foreach($result as $r){
            $this->uploadLog($r);
        }
    }

    private function _loadConfig()
    {
        // Loads config
        $path = dirname(__FILE__) . '/' . self::CONFIG_FILENAME;
        $this->_config = parse_ini_file($path) ;
    }

    public function uploadLog($filename) {

        //Uploads file to database
        $filename = trim($this->_config['logspath'] . trim($filename));

        if(file_exists($filename)){
            $myfile = fopen($filename, "r");
            while(!feof($myfile)) {
                $content= fgets($myfile);
                $carray=explode($this->_config['logFomatDelimiter'],$content);
                list($REQUEST_TIME, $HOSTNAME, $IP_ADDRESS, $WORKFLOW_NAME, $USERID, $EVENT_MESSAGE , $OPTIONAL_DETAILS)=$carray;

                $statement = "INSERT INTO AUTH_LOGS(REQUEST_TIME, HOSTNAME, IP_ADDRESS, WORKFLOW_NAME, USERID, EVENT_MESSAGE , OPTIONAL_DETAILS) 
                 values(to_date(:REQUEST_TIME, 'YYYY-MM-DD HH24:MI:SS' ), :HOSTNAME, :IP_ADDRESS, :WORKFLOW_NAME , :USERID ,:EVENT_MESSAGE ,:OPTIONAL_DETAILS)";

                //Preparing an Oracle statement for execution
                $compiled = oci_parse($this->_dbConn, $statement);

                //binding values to named parameters
                oci_bind_by_name($compiled, ':REQUEST_TIME', $REQUEST_TIME);
                oci_bind_by_name($compiled, ':HOSTNAME', $HOSTNAME);
                oci_bind_by_name($compiled, ':IP_ADDRESS', $IP_ADDRESS);
                oci_bind_by_name($compiled,':WORKFLOW_NAME', $WORKFLOW_NAME);
                oci_bind_by_name($compiled, ':USERID', $USERID);
                oci_bind_by_name($compiled, ':EVENT_MESSAGE', $EVENT_MESSAGE);
                oci_bind_by_name($compiled, ':OPTIONAL_DETAILS', $OPTIONAL_DETAILS);


                //Executing statement
                oci_execute($compiled, OCI_COMMIT_ON_SUCCESS);
            }
            //closing the file
            fclose($myfile);
            $this->updateRegistry($filename);
            return TRUE;
        }
        else{
            throw new Exception("File doesnot exist");
        }
    } 

    public function sendEmail(Exception $e){

        $sent = mail($this->_config['recipients'], $this->_config['notificationSubject'], $e);
    }

    public function updateRegistry($filename)
    {

        $uploadedfilename = fopen($this->_config['uploadedRegistry'], "a");
        fwrite($uploadedfilename, basename($filename . date($this->_config['filenameTimeSeparator'] . 'Ymdhi', time())) . PHP_EOL);
    } 
}

try {
    $logAgent = new logAgent();
    $logAgent->uploadLogs();
}
catch (Exception $e) {
    $logAgent->sendEmail($e);
}
?>

0 ответов

Другие вопросы по тегам