我一直致力于一个涉及创建PHP服务的项目,使其在Vertrigo本地工作,然后将其上传到IBM Bluemix。
代码似乎在本地工作得很好,但是当试图找出Bluemix中的代码时,它开始失败。
该项目由3个文件组成:index.html
,client.php
和server.php
。显然,问题出现在client.php
和server.php
之间。当我尝试从server.php
调用client.php
中定义的函数时,它将跳过调用该函数的行,并继续执行其余的函数。
这是client.php代码的一部分:
<?php
if(isset($_POST['saludo']) && !empty($_POST['nombre']) && !empty($_POST['apellido'])) {
require_once ('nusoap.php');
$soapclient = new soapclient( 'server.php');
$resultado = $soapclient->call('funcionsaludo',array( 'nombre'=>$_POST['nombre'],'apellido'=>$_POST['apellido']));
$html = <<<html
<html>
<head></head>
<title>Saludando...</title>
<body bgcolor = "#9d1fc4" text = "black"><center><img src = "/images/3.jpg"></center><br><br>
<center><b>$resultado<br><br><a href='index.html' style='color: #ffffff'>INICIO</a></b></center>
</body>
</html>
html;
echo $html;
}
正在跳过的部分是对文件server.php
的调用,即:
$soapclient = new soapclient( 'server.php');
$resultado = $soapclient->call('funcionsaludo',array( 'nombre'=>$_POST['nombre'],'apellido'=>$_POST['apellido']));
最后,我展示了server.php文件的一部分:
<?php
require_once('nusoap.php');
$server = new soap_server;
$server->register('funcionsaludo');
$server->register('getData');
$server->register('insertData');
function funcionsaludo ($nombre,$apellido) {
return "<html><head></head><body>Hola $nombre $apellido<br><br></body></html>";
}
结果,函数funcionsaludo
返回一个由&#34; Hola $ nombre $ apellido&#34;组成的字符串,但它似乎被跳过,因为字符串没有在屏幕上显示。
我还要补充说,所有3个文件index.html
,client.php
,server.php
和使用的nusoap.php
库都已上传到IBM Bluemix DevOps Services中的默认项目文件夹,它们不在不同的文件夹或类似的文件夹中。此外,我没有在日志中看到任何可以解释的错误消息。
我感谢任何有关为什么跳过server.php
文件中的函数的帮助。谢谢!
答案 0 :(得分:0)
好吧,在你的HTML变量中你有一些标签,但是对于PHP来说它是文本,你应该加倍/单引号,如下所示:
$html = '<html>
<head></head>
<title>Saludando...</title>
<body bgcolor = "#9d1fc4" text = "black"><center><img src = "/images/3.jpg"></center><br><br>
<center><b>$resultado<br><br><a href="index.html" style="color: #ffffff">INICIO</a></b></center>
</body>
</html>';
echo $html;
否则它将被解释为PHP方法和函数,而那些不存在。我建议您更改此项并重试,如果它不起作用,请在浏览器上打开开发人员工具,看看是否有任何内容呈现(例如页面HTML结构)。