繁体   English   中英

如何为 XAMPP 安装 PECL HTTP 扩展?

[英]How to install PECL HTTP extension for XAMPP?

我想在我的 XAMPP 环境(操作系统是 Windows)中安装 PHP PECL HTTP 扩展。 我试图将 php_http.dll 扩展名的多个变体添加到我的 ext 目录中,并将 extension=php_http.dll 添加到 php.ini 文件中。 然而,当我去启动 Apache 服务时,它会抛出某种错误。

很明显我做错了什么,但我不知道是什么。 我能找到的最后一个相关问题已经过时了 5 年。 有人知道如何安装它吗?

你可以试试:

For pecl.
Look in xampp\php for the pecl.bat file
Open a command console window in this folder and issue the pecl.bat command and it will give a list of commands to use.

这篇博文展示了如何在 Windows 上安装 XAMPP 以运行连接到远程 Oracle 数据库的 PHP 应用程序。

*

XAMPP 是一个开源包,其中包含 Apache、PHP 和许多 PHP '扩展'。 这些扩展之一是连接到 Oracle 数据库的 PHP OCI8。

*

安装 XAMPP:D: 驱动器。

下载“ XAMPP for Windows ”并按照安装程序向导进行操作。 我安装到我的D: 驱动器中。

通过 XAMPP 控制面板启动 Apache 服务器。

XAMPP 控制面板的屏幕截图

通过浏览器访问http://localhost/dashboard/phpinfo.php可以查看已安装 PHP 的架构和线程安全模式。 请注意,这是已安装 PHP 的架构,而不是您机器的架构。 可以在 x64 机器上运行 x86 PHP。

在此处输入图片说明

Oracle OCI8 预装在 XAMPP 中,但如果您需要更新版本,您可以从pecl.php.net下载更新的 OCI8 PECL 包。

选择一个 OCI8 版本并根据体系结构和线程安全模式选择 DLL。 例如,如果 PHP 是 x86 并且启用了线程安全,请下载“7.2 线程安全 (TS) x86”。 然后将“D:\\xampp\\php\\ext\\php_oci8_12c.dll”替换为来自 OCI8 PECL 包的新“php_oci8_12c.dll”。

PECL OCI8下载页面截图

编辑“D:\\xampp\\php\\php.ini”并取消注释“extension=oci8_12c”行。 确保“extension_dir”设置为包含 PHP 扩展 DLL 的目录。 例如,

extension=oci8_12c

extension_dir="D:\xampp\php\ext"



  • OTN下载 Oracle Instant Client Basic 包

选择正确的架构以与 PHP 保持一致。 对于 Windows x86,从 Windows 32 位页面下载“instantclient-basic-nt-12.2.0.1.0.zip”。

Oracle Instant Client 下载页面的屏幕截图

将文件解压缩到“D:\\Oracle”等目录中。 将创建子目录“D:\\Oracle\\instantclient_12_2”。

将此子目录添加到 PATH 环境变量。 您可以在控制面板 -> 系统 -> 高级系统设置 -> 高级 -> 环境变量 -> 系统变量 -> PATH 中更新 PATH。 在我的示例中,我将其设置为“D:\\Oracle\\instantclient_12_2”。

重新启动 Apache 服务器并再次检查 phpinfo.php 页面。 它显示 OCI8 扩展已成功加载。

显示 OCI8 部分的 PHP 配置页面的屏幕截图

如果您还从终端窗口运行 PHP,请确保关闭并重新打开终端以获取更新的 PATH 值。

要运行您的第一个 OCI8 应用程序,请在 XAMPP 文档根目录“D:\\xampp\\htdocs\\test.php”中创建一个新文件。 它应该包含:

<?php
 
error_reporting(E_ALL);
ini_set('display_errors', 'On');
 
$username = "hr";                  // Use your username
$password = "welcome";             // and your password
$database = "localhost/orclpdb";   // and the connect string to connect to your database
 
$query = "select * from dual";
 
$c = oci_connect($username, $password, $database);
if (!$c) {
    $m = oci_error();
    trigger_error('Could not connect to database: '. $m['message'], E_USER_ERROR);
}
 
$s = oci_parse($c, $query);
if (!$s) {
    $m = oci_error($c);
    trigger_error('Could not parse statement: '. $m['message'], E_USER_ERROR);
}
$r = oci_execute($s);
if (!$r) {
    $m = oci_error($s);
    trigger_error('Could not execute statement: '. $m['message'], E_USER_ERROR);
}
 
echo "<table border='1'>\n";
$ncols = oci_num_fields($s);
echo "<tr>\n";
for ($i = 1; $i <= $ncols; ++$i) {
    $colname = oci_field_name($s, $i);
    echo "  <th><b>".htmlspecialchars($colname,ENT_QUOTES|ENT_SUBSTITUTE)."</b></th>\n";
}
echo "</tr>\n";
 
while (($row = oci_fetch_array($s, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
    echo "<tr>\n";
    foreach ($row as $item) {
        echo "<td>";
        echo $item!==null?htmlspecialchars($item, ENT_QUOTES|ENT_SUBSTITUTE):"&nbsp;";
        echo "</td>\n";
    }
    echo "</tr>\n";
}
echo "</table>\n";
 
?>

您需要编辑此文件并设置您的数据库用户名、密码和连接字符串。 如果您使用的是 Oracle 数据库 XE,则连接字符串应为“localhost/XE”。

SQL 查询也可以更改。 目前它查询每个用户都有的特殊 DUAL 表。

使用http://localhost/test.php在浏览器中加载测试程序。 输出将是名为“DUMMY”的列中的单个值“X”。



- - 笔记


也许这会有所帮助,但这个问题在 XAMPP 中非常复杂。 我在 xampp 中听到了一些关于这个问题的报告,我建议免费测试 VPS 以进一步研究。
如果您有任何问题,请在评论中发表。 如果有不兼容或错误的地方,请务必发表评论! 谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM