SOAP-WebService-PHP可以';t访问扩展功能

SOAP-WebService-PHP可以';t访问扩展功能,php,oracle,web-services,soap,memcached,Php,Oracle,Web Services,Soap,Memcached,我正在用PHP编写一个SOAP Web服务,遇到了一个问题 此服务正在Linux服务器上运行。我有一个连接到Oracle数据库的函数,还有一个连接到本地Memcached服务器的函数 因此,当我调用Oracle connections的函数时,SOAP返回: 未捕获的SoapFault异常:[SOAP-ENV:Server]调用未定义的函数oci_connect() 但是,如果我使用相同的Oracle函数创建一个简单的php文件,它就可以正常工作(没有SOAP) 我创建了一个简单的服务器/客户端

我正在用PHP编写一个SOAP Web服务,遇到了一个问题

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

因此,当我调用Oracle connections的函数时,SOAP返回:

未捕获的SoapFault异常:[SOAP-ENV:Server]调用未定义的函数oci_connect()

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

我创建了一个简单的服务器/客户端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();
?>

我在本地windows计算机上没有遇到此问题

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

setsebool-p httpd_can_网络_连接1

您还可以在配置文件中禁用SELinux,如下所示:

SELINUX=禁用


您正在使用的服务器是什么?我正在使用Apache和PHP5.4。您能够为您的服务生成WSDL吗??您是否调用了正确的服务名称及其绑定端口?对于我的小示例,我没有使用wsdl模式,但在我的实际服务中,我可以生成wsdl文件。我也可以调用一些基本函数,但如果我有一个函数必须连接到Oracle或Memcached,我会出现类似“调用未定义函数oci_connect()”的错误。但是,如果我尝试从一个简单的php文件(没有soap层)调用oci_connect,它就可以工作了
<?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());
 ?>
$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');
}