Как запустить 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);
}
?>