【问题标题】:Why PHP don't see extension dll file?为什么 PHP 看不到扩展 dll 文件?
【发布时间】:2019-03-26 15:02:34
【问题描述】:

我对 PHP 的奇怪行为有点困惑,需要建议如何解决它。

我正在尝试测试非常简单的 php 脚本:

$conn = oci_connect($dbUser, $dbPassword, $dbServerName . "/" . $dbName);
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

不幸的是它让我下一个错误

[22-Oct-2018 19:22:23] PHP Warning:  PHP Startup: Unable to load dynamic library 'F:\PHP_x64\ext\php_oci8_12c.dll' - The specified procedure could not be found.
 in Unknown on line 0
[22-Oct-2018 19:22:23] PHP Fatal error:  Call to undefined function oci_connect() in F:\TEST\complain\test.php on line 8

我有一个位于 IIS Web 服务器中的项目。项目使用 PHP 版本 5.6.28。

F:\PHP_x64\ext\ 文件夹内,我有文件php_oci8_12c.dll,如下所示:

php.ini 文件中我有未注释的行:

extension=php_oci8_12c.dll

我也在php.ini文件中添加:

extension_dir = "F:\PHP_x64\ext\"
[PHP_OCI8_12C]
extension=php_oci8_12c.dll

我多次重启 IIS 网络服务器。

当我尝试从控制台调用 php.exe 时,它​​会显示下一个错误:

【问题讨论】:

  • 您是否启用了任何其他 OCI dll?
  • @JayBlanchard 现在,我只有这个问题。我还尝试通过mysqli_connect 连接到远程 MySQL 数据库,它可以工作!我不确定,但对于那个 PHP 使用 php_mysqli.dll 扩展文件,对吗?在我的帖子中,我尝试连接到 Oracle 12C 数据库。兄弟,你有什么想法吗?
  • 没错。这是在 Windows 服务器上吗?
  • @JayBlanchard 是的,IIS 网络服务器位于 Windows Server 2008 R2
  • 在 Windows 上,您通常可以通过将 'extension_dir'(在 php.ini 中)中指定的路径添加到 PATH 系统环境变量的值来解决这类问题。

标签: php oracle iis


【解决方案1】:

最后我找到了适合我的解决方案。

我用来连接 PHP 和 Oracle 的代码:

$conn = oci_connect($dbUser, $dbPassword, "(DESCRIPTION=(ADDRESS_LIST =(ADDRESS=(PROTOCOL = TCP)(HOST=$dbServerName)(PORT = 1521)))(CONNECT_DATA=(SID=$dbSID)))", 'AL32UTF8') or die("Could not connect to ORACLE");

我使用SID,你也可以使用SERVICE_NAME

【讨论】:

    猜你喜欢
    • 2016-12-10
    • 2013-08-01
    • 1970-01-01
    • 2011-11-07
    • 2022-06-11
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    相关资源
    最近更新 更多