【问题标题】:Fatal error: Uncaught Error: Call to undefined function oci_connect() while running the php script through command prompt致命错误:未捕获错误:通过命令提示符运行 php 脚本时调用未定义函数 oci_connect()
【发布时间】:2018-08-07 10:01:26
【问题描述】:

我有一个将数据上传到 oracle 数据库的 php 脚本。当我通过我的网络浏览器运行它时,它工作正常。但是,当我通过命令提示符运行它时,它会给出错误:“致命错误:未捕获的错误:调用 C:\wamp64\www\MyLogs\logs2.php:2 中的未定义函数 oci_connect() 堆栈跟踪:

0 {主}

在第 2 行的 C:\wamp64\www\MyLogs\logs2.php 中抛出

我检查了与该主题相关的所有先前查询并设置了 PATH 变量,在 php.ini 文件中进行了更改(extension=php_oci8_12c.dll)并尝试了以下步骤来运行我的脚本,但仍然没有成功。

cd C:\wamp64\bin\php\php7.2.4\ php.exe -f C:\wamp64\www\MyLogs\my_script.php

有人可以指导一下可能出现的错误。我正在附加我的 php 脚本。

<?php
$conn = oci_connect('ABC', 'abcABC123', 'abcd1142/AXD');
if (!$conn) {
   $m = oci_error();
   echo $m['message'], "\n";
   exit;
}
else {
	$d = new DateTime();
	$yesterday = $d->sub(new DateInterval('P1D'))->format('Y.m.d');
	$filename = "access.$yesterday.txt";
	if(file_exists($filename)){
		$myfile = fopen($filename, "r");
		while(!feof($myfile)) {
			$content= fgets($myfile);	
			$carray=explode(',',$content);
			list($IP_ADDRESS, $USER_IDENTIFIER, $USERID , $REQUEST_TIME , $CLIENT_REQUEST ,$RESPONSE_CODE ,$SIZEOFOBJECT, $COOKIES, $AUTHSCHEME, $AUTHMARKET, $X_REQUESTED_WITH, $ENV, $TANUSER)=$carray;
			$img=['.gif', '.jpeg', '.png'];
			if (strlen(str_replace($img, '', $CLIENT_REQUEST)) !== strlen($CLIENT_REQUEST)) {
				// Found an image
				continue;
			}	
			$stdii = 'INSERT INTO LOGS(IP_ADDRESS, USER_IDENTIFIER, USERID , REQUEST_TIME , CLIENT_REQUEST ,RESPONSE_CODE ,SIZEOFOBJECT, COOKIES, AUTHSCHEME, AUTHMARKET, X_REQUESTED_WITH, ENV, TANUSER)'.
			'values(:IP_ADDRESS, :USER_IDENTIFIER, :USERID , :REQUEST_TIME , :CLIENT_REQUEST ,:RESPONSE_CODE ,:SIZEOFOBJECT, :COOKIES, :AUTHSCHEME, :AUTHMARKET, :X_REQUESTED_WITH, :ENV, :TANUSER)';
			$compiled1 = oci_parse($conn, $stdii);
			oci_bind_by_name($compiled1, ':IP_ADDRESS', $IP_ADDRESS);
			oci_bind_by_name($compiled1, ':USER_IDENTIFIER', $USER_IDENTIFIER);
			oci_bind_by_name($compiled1,':USERID', $USERID);
			oci_bind_by_name($compiled1, ':REQUEST_TIME', $REQUEST_TIME);
			oci_bind_by_name($compiled1, ':CLIENT_REQUEST', $CLIENT_REQUEST);
			oci_bind_by_name($compiled1, ':RESPONSE_CODE', $RESPONSE_CODE);
			oci_bind_by_name($compiled1, ':SIZEOFOBJECT', $SIZEOFOBJECT);
			oci_bind_by_name($compiled1, ':COOKIES', $COOKIES);
			oci_bind_by_name($compiled1, ':AUTHSCHEME', $AUTHSCHEME);
			oci_bind_by_name($compiled1, ':AUTHMARKET', $AUTHMARKET);
			oci_bind_by_name($compiled1, ':X_REQUESTED_WITH', $X_REQUESTED_WITH);
			oci_bind_by_name($compiled1, ':ENV', $ENV);
			oci_bind_by_name($compiled1, ':TANUSER', $TANUSER);
			oci_execute($compiled1, OCI_COMMIT_ON_SUCCESS);
			}
			//Alert if the file has been uploaded
			$message="File Uploaded";
			echo "<script type='text/javascript'>alert(\"$message\");</script>";
			//closing the file
			fclose($myfile);
	}
	else{
		//Alert if the file doesn't exists
		$message2="File Doesn't exists";
		echo "<script type='text/javascript'>alert(\"$message2\");</script>";
	}
}
//Close the database connection
oci_close($conn);
?>

【问题讨论】:

  • 有人可以帮忙

标签: php oracle


【解决方案1】:

在用各种可能的方法解决我的查询后,我发现这是两个 php.ini 文件。一种用于命令行执行,位于 C:\wamp\bin\php\php5.4.16 ,另一种用于 Apache 内部的 PHP,位于 C:\wamp\bin\apache\Apache2.4.4\bin。您可以通过 php -i(对于 CLI)和(对于 Web 服务器)检查 php.ini 文件的位置。因此,当您想通过命令行运行脚本时,您需要在 php 文件夹中进行配置更改。 只需取消注释或添加以下行: extension_dir =“c:/wamp64/bin/php/php7.2.4/ext/” 扩展=php_oci8_12c.dll

【讨论】:

    猜你喜欢
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 2019-05-22
    • 2017-01-27
    • 2016-04-07
    • 2017-08-19
    相关资源
    最近更新 更多