繁体   English   中英

PHP,PEAR和oci8配置

[英]PHP, PEAR, and oci8 configuration

我会尽快讲的。

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

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

  • 尝试通过以下pecl install oci8pecl install oci8
  • 当最初几次仍然无法正常工作时,出于某种原因,我发现我需要“开发工具”-通过yum groupinstall "Development Tools"
  • 然后,我后来发现PHP实际上并没有执行oci8-它是PHP Devel。 因此,我也必须通过yum install 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了一个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行的Unknown中没有这样的文件或目录

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

注意事项:

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

这只是与已存在且正在运行但即将死去的安装程序的复制有关的一连串问题中的我的问题之一。 似乎无论何时我想解决问题,我都必须先做X。 通过执行X,我发现了另一个问题,我必须通过执行Y来解决,它有自己的问题,等等。

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

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

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阅读的文件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

高温超导

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

做到了。

暂无
暂无

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

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