0

我会尽快完成的。

我在 Fedora 19 系统上安装了 Oracle 11g(带有适当的数据库、用户等)、Apache 2.4.6 和 PHP 5.5.4。

我想将 PHP 连接到 Oracle。我真正想做的是下载MDB2_Driver_oci8,我认为这很容易,但是在我做这样的事情之前,PHP需要启用那个插件,所以我做了以下事情:

  • 尝试通过以下方式安装 oci8: pecl install oci8
  • 当前几次不完全奏效时,我发现出于某种原因,我需要“开发工具”-通过yum groupinstall "Development Tools"
  • 然后我后来发现PHP实际上不做oci8 - 它是PHP Devel。所以,我也必须通过yum install php-devel.
  • 然后,我终于安装了oci8。它要求 Oracle 目录,就是这样。但它说了以下内容:
    Configuration option 'php_ini' is not set to php.ini location
    You should add 'extensions=oci8.so' to php.ini

首先,我做了一个locate oci8.so- 在 /usr/lib64/php/modules/ 中找到它。
其次,我将它告诉我的内容添加到 php.ini 文件中。
第三,我检查了通常的 php_info() 测试页面——没有提到 OCI8。哦哦。
第四,运行php -i 和php -m列出的 oci8 作为模块之一。诡异的。
无奈之下,我继续下载了MDB2_Driver_oci8。也许这会解决问题。没有。

当我加载我的 PHP 网页时,它返回以下内容:
错误消息:扩展 oci8 未编译为 PHP
以及:MDB2 错误:未找到

奇怪的。然后我决定检查错误日志:
PHP 启动 - 无法加载动态库 '/usr/lib64/php/modules/oci8.so' - libclntsh.so.11.1: 无法打开共享对象文件:没有这样的文件或目录在第 0 行的未知中

现在我被困住了。我尝试进入 php.ini,发现extension_dir被注释掉了。我把它放回去了,这似乎只会破坏东西。

注意事项:

  • 我按照这个(链接)指南了解如何配置 PHP 和安装 oci8。
  • ./configure --with-oci8不起作用。Fedora 说没有这样的目录
  • 由于网页文件和实际服务器都位于同一台 PC 上,因此我没有安装 Oracle 客户端文件。
  • extension_dir 默认在 php.ini 中被注释掉。

这只是我在关于复制已经存在且正在工作但即将死去的设置的一长串问题中的一个问题。似乎每当我想解决问题时,我都必须先做X。通过做X,我发现了另一个问题,我必须通过做Y来解决这个问题,它有自己的问题等等。

任何帮助将非常感激。谢谢。

4

2 回答 2

0

我知道这个问题有点老了 - 但我在这里写这个,以防其他人来寻找解决方案。

PHP 扩展目录

要获取您的 PHP 扩展目录,请运行此命令

php-config --extension-dir

甲骨文配置

当您为 oracle 运行 config 命令时,您需要为它提供您的 Oracle 主目录(假设您已经安装了 ORACLE XE):

./configure -with-oci8=shared,$ORACLE_HOME/xe

SELinux 政策

您需要调整您的 SELinux 策略以支持您想要实现的目标。不建议完全禁用它。

在您的 Fedora 系统上,尝试运行:

which audit2allow

如果你收到一个错误提示它找不到,audit2allow那么你需要安装这个包:

yum install policycoreutils-python

一旦你有了这个包,你可以将你的审计日志文件导入audit2allow到它来创建你的策略文件:

grep httpd /var/log/audit/audit.log | audit2allow -m httpd > http.te

这将创建http.te人类可读的文件,以便您查看它将对您的 SELinux 配置进行的策略添加。如果您对修改没问题,请运行这些命令(注意以下命令中的大写 M 与之前的小写 m

grep httpd /var/log/audit/audit.log | audit2allow -M httpd
semodule -i httpd.pp

这可能需要几秒钟才能运行 - 您可以通过运行以下命令来验证策略是否已安装:

semodule -l | grep httpd

您将需要重新启动 httpd 以便它可以尝试加载 oci8.so 插件

service httpd restart

高温高压

于 2014-12-11T14:50:26.370 回答
-1

在互联网上阅读了很多之后,我找到了这个页面,这表明我应该禁用 SELinux,然后重新启动。

那成功了。

于 2013-11-12T03:59:35.463 回答