SOAP WebService PHP 无法访问扩展函数

SOAP WebService PHP can't access extensions functions

我在 PHP 中编写 SOAP WebService 代码时遇到问题。

此服务 运行 在 Linux 服务器上。我有一个连接到 Oracle 数据库的功能,另一个连接到本地 Memcached 服务器的功能。

所以,当我调用我的 Oracle 连接函数时,SOAP returns :

Uncaught SoapFault exception: [SOAP-ENV:Server] Call to undefined function oci_connect()

但是,如果我使用相同的 Oracle 函数创建一个简单的 php 文件,它就可以正常工作(没有 SOAP)

我创建了一个简单的 server/client php 文件用于测试,我遇到了同样的问题,这是我的代码:

服务器:

<?php
class Serveur{

    function helloWorld()
    {
        return "Hello World";
    }

    function connexionOracle()
    {
        $conn = oci_connect('XXXXX', 'XXXX', 'XXXXX');
        if($conn == false)
        {
            return "Error";
        }
        else
        {
            return "OK";
        }
    }
}
$serversoap = new SoapServer(null, array('uri' => "http://localhost/test/"));
$serversoap->setClass("Serveur");
$serversoap->handle();
?>

客户:

<?php
    error_reporting(E_ALL | E_STRICT);
    $client = new SoapClient(null, array('location' => "http://localhost/test/serveur.php",'uri'=> "http://localhost/test/"));

    print_r($client->helloWorld());
    echo "</br>";
    print_r($client->connexionOracle());
 ?>

此代码 returns :

Call to undefined function oci_connect()

但是如果我使用像这样的简单文件,一切正常:

$conn = connexionOracle2();
var_dump($conn);

function connexionOracle2()
{
    $db = "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = XXXXX)(Port = XXXX)) ) (CONNECT_DATA = (SID = XXXXXX) ) )";
    return oci_connect('cartetest', 'evol', $db) or Die('Connexion Oracle impossible');
}

我在本地 windows 机器上没有遇到这个问题

这是对我有用的解决方案:

setsebool -P httpd_can_network_connect 1

您也可以在配置文件中禁用 SELinux:

SELINUX=disabled