PHP,PEAR和oci8配置

时间:2013-11-11 08:31:22

标签: php fedora oci8

我会快点。

我在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 Directory,就是这样。但它说了以下几点:
    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被注释掉了。我把它放回去,这似乎只是破坏了东西。

注意事项:

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

这只是我在一系列问题中遇到的一个问题,这些问题涉及复制已经存在且正常工作但很快死的设置。似乎每当我想解决问题时,我都必须先做X.通过做X,我发现了另一个问题,我必须通过做Y来解决,这有其自身的问题等等。

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

2 个答案:

答案 0 :(得分:0)

我知道这个问题有点陈旧 - 但我在这里写这篇文章,其他人一直在寻找解决方案。

PHP扩展程序目录

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

php-config --extension-dir

ORACLE配置

当你运行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

HTH

答案 1 :(得分:-1)

在互联网上阅读了很多内容之后,我发现了这个page,表示我应该禁用SELinux,然后重启。

这就是诀窍。