2016-01-13 50 views
0

我在PHP中编写SOAP WebService,并遇到问题。SOAP WebService PHP无法访问扩展功能

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

所以,当我把我的Oracle连接的功能,SOAP回报:

未捕获的SOAPFault例外:SOAP-ENV:服务器]调用未定义的函数oci_connect()

但是,如果我创建一个简单的PHP文件具有相同的Oracle功能它工作正常(没有SOAP)

我创建了一个简单的服务器/客户端php文件juste进行测试,我遇到同样的问题,这里是我的代码:

服务器:

<?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()); 
?> 

此代码返回:

调用未定义的函数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机器上

+0

什么是你正在使用的服务器? –

+0

我正在使用Apache和PHP 5.4 – ctbs1

+0

您是否能够为您的服务生成WSDL?你打电话给他的绑定端口正确的服务名称? –

回答

0

这是为我工作的解决方案:

setsebool -P httpd_can_network_connect 1

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

SELINUX =禁用