2016-06-10 7 views
0

Ich habe an einem Projekt gearbeitet, bei dem ein PHP-Dienst erstellt, lokal mit Vertigo gearbeitet und dann auf IBM Bluemix hochgeladen wird.Ich versuche, einen PHP-Code in bluemix zu erstellen

Der Code scheint in Lokal gut zu funktionieren, aber beim Versuch, den Code in Bluemix herauszufinden, beginnt es zu versagen. Das Projekt besteht aus 3 Dateien: index.html, client.php und server.php. Offensichtlich kommt das Problem zwischen client.php und server.php. Wenn ich versuche, eine Funktion aufzurufen, die in server.php von client.php definiert ist, wird nur die Zeile übersprungen, in der der Aufruf dieser Funktion ist, und den Rest weiter ausführen.

Dieser Teil des client.php-Code ist:

<?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; 
    } 

Der Teil, der übersprungen wird, wo der Aufruf der Datei server.php gemacht wird, das ist:

$soapclient = new soapclient('server.php'); 
$resultado = $soapclient->call('funcionsaludo',array('nombre'=>$_POST['nombre'],'apellido'=>$_POST['apellido'])); 

Schließlich ich zeige Teil der server.php Datei:

<?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>"; 
    } 

Als Ergebnis wird die Funktion funcionsaludo gibt eine Zeichenfolge zurück, die sich aus "Hola $ nombre $ apellido" zusammensetzt, wird aber anscheinend übersprungen, da die Zeichenfolge nicht auf dem Bildschirm angezeigt wird.

Ich möchte auch hinzufügen, dass alle 3 Dateien index.html, client.php, server.php und die Bibliothek verwendet, die nusoap.php ist haben alle auf den Standardprojektordner innerhalb IBM Bluemix DevOps Dienstleistungen hochgeladen, und sie sind nicht in verschiedenen Ordnern oder so ähnlich. Darüber hinaus sehe ich in den Logs keine Fehlermeldung, die etwas Licht in die Runde bringen könnte.

Ich freue mich über jede Hilfe gegeben, warum diese Funktion in der server.php Datei übersprungen wird. Vielen Dank !

Antwort

0

Nun, in Ihrem HTML-Variable haben Sie ein paar Tags, aber für PHP es als Text zu interpretieren, sollten Sie/Apostroph es verdoppeln, wie folgt aus:

$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; 

Ansonsten, es wird als PHP-Methoden interpretieren und Funktionen, und diese existieren nicht. Ich schlage vor, Sie ändern dies und versuchen es erneut, wenn es nicht funktioniert, öffnen Sie die Entwickler-Tools in Ihrem Browser und sehen Sie, ob überhaupt etwas gerendert wird (z. B. HTML-Seitenstruktur).

+0

Entschuldigung, für die Verwendung von einfachen Anführungszeichen, wie ich gepostet habe, müssen Sie die Variablen verketten. Wenn Sie nicht verketten wollen, müssen Sie doppelte Anführungszeichen verwenden, aber dazu müssen Sie dann die aus Ihren HTML-Tags entfernen. –