php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.10.2011, 23:14  
Neuer Benutzer
 
Registriert seit: 20.10.2011
Beiträge: 10
PHP-Kenntnisse:
Fortgeschritten
Stephan22 befindet sich auf einem aufstrebenden Ast
Standard cURL aktualisiert Webseite

Hallo,

Ich stehe seit 2 Stunden auf dem Schlauch..
Mein Versuch in Plesk (über die API) einen Clienten anzulegen scheitert gerade...

Die Funktion "xml2Array" macht nix anderes, als aus dem Rückgabewert von Plesk (XML) ein Array zu gestalten. Das klappt wesentlich besser als SimpleXMLObject. Diese Funktion habe ich wegen der Größe weg gelassen.

Es sind einige "prints" eingebaut, um zu verfolgen wo das Problem liegt.
Dabei die Erklärung:
- Ich aktualisiere die Seite und Rufe die Datei auf.
- Am Ende "beim Fertigen laden" steht auf dem Display nur "test"
- test1 bis test4 werden nicht angezeigt.
- Setze ich unter test3 also über den curl_exec ein exit; steht auf dem Monitor "test" bis "test3"
- Setzte ich das exit; über "test4" also unter curl_exec steht nur "test" auf dem Monitor.

Jetzt kommt das Kuriose..
Der aufrufe unter "test3" curl_exec funktioniert.
Der Entsprechende Client ist angelegt und hat die Einstellungen übernommen.
Das bedeutet, die Domain "testtesttest.de" ist eingetragen !!

Lösche ich den Benutzer inclusive Domain und führe die Datei erneut aus, klappt es wieder wie davor. Es erscheint "test".
Und dadrunter dann eine Fehlermeldung von Plesk, dass der Benutzer bereits exisitert. Ist ja klar.. Wurde ja bereits eingetragen..

Ich kann es leider einfach nicht nachvollziehen.

Vielleicht kann mir hier jemand bei diesem - meiner Meinung nach - sehr komischen Fehler helfen..

PHP-Code:
<?php
    
class PleskAPI {
        var 
$host;
        var 
$port;
        var 
$path;
        var 
$url;
        var 
$curl;

        public function 
__construct() {
            
$this->host                    '****';
            
$this->port                    '****';
            
$this->path                    'enterprise/control/agent.php';
            
$this->url                    'https://'.$this->host.':'.$this->port.'/'.$this->path;

        }

        protected function 
loginHeader() {
            
$headers                    = array('HTTP_AUTH_LOGIN:****''HTTP_AUTH_PASSWD:****''Content-Type: text/xml');
            return 
$headers;
        }

        protected function 
initCurl() {
            
$this->curl                    curl_init();
            
curl_setopt($this->curlCURLOPT_SSL_VERIFYHOST0);
            
curl_setopt($this->curlCURLOPT_SSL_VERIFYPEERfalse);
            
curl_setopt($this->curlCURLOPT_HTTPHEADER$this->loginHeader());
            
curl_setopt($this->curlCURLOPT_URL$this->url);
            
curl_setopt($this->curlCURLOPT_RETURNTRANSFERtrue);

            
curl_setopt($this->curlCURLOPT_FORBID_REUSEtrue);
            
curl_setopt($this->curlCURLOPT_FRESH_CONNECTtrue);
        }

        public function 
createHosting($hostingArray) {
            
$customerID                    $this->createCustomer(array());
            
$this->addHosting(array(), $customerID);
            
$this->configureHosting(array());
        }

        public function 
createCustomer($customerArray) {
            
$this->initCurl();
print 
"test<br/>";
            
$packet     '<?xml version="1.0" encoding="UTF-8" ?>
                        <packet version="1.6.3.0">
                            <customer>
                                <add>
                                    <gen_info>
                                        <pname>Max Mustermann</pname>
                                        <login>web4</login>
                                        <passwd>ddffgg</passwd>
                                    </gen_info>
                                </add>
                            </customer>
                        </packet>'
;

            
curl_setopt($this->curlCURLOPT_POSTFIELDS$packet);


            
$retval                     curl_exec($this->curl);
            
curl_close($this->curl);
            
$retval                        xml2array($retval);
            
$retval                        $retval['packet']['customer']['add']['result']['id'];

            return 
$retval;
        }

        public function 
addHosting($addHostingArray$customerID) {
            
$this->initCurl();
print 
"test1<br/>";
            
$packet     '<?xml version="1.0" encoding="UTF-8" ?>
                        <packet version="1.6.3.0">
                            <webspace>
                                   <add>
                                         <gen_setup>
                                               <name>testtesttest.de</name>
                                        <owner-id>'
.$customerID.'</owner-id>
                                               <ip_address>****</ip_address>
                                               <status>0</status>
                                         </gen_setup>
                                         <prefs>
                                               <www>true</www>
                                         </prefs>
                                   </add>
                             </webspace>
                        </packet>'
;
print 
"test2<br/>";
            
curl_setopt($this->curlCURLOPT_POSTFIELDS$packet);

print 
"test3<br/>";
            
$retval                     curl_exec($this->curl);
print 
"test4<br/>";
exit;
            
curl_close($this->curl);
            
$retval                        xml2array($retval);
            
$retval                        $retval;
print 
"<pre>";
print_r($retval);
exit;
            return 
$retval;
        }

        public function 
configureHosting($hostingArray) {

        }
    }
?>
Ich hoffe meine Erklärungen sind Verständlich. Ich habe mir Mühe gegeben, dieses "Kuriose" Problem bestens zu beschreiben.

Ich Danke schonmal im Vorraus!

Gruß Stephan
Stephan22 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 21.10.2011, 09:15  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

hm - meine Vermutung ist :

der curl_exec Aufruf "hängt" - da du aber die Ausgabe mit einfachen Prints / Echos machst, puffert der Browser zwischen ...
häng einfach mal hinter jedes print( ) ein flush(); - dann solltest du auch die Ausgabe test3 bekommen - dann aber hängt dein script am curl-Aufruf ....
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 21.10.2011, 09:25  
Neuer Benutzer
 
Registriert seit: 20.10.2011
Beiträge: 10
PHP-Kenntnisse:
Fortgeschritten
Stephan22 befindet sich auf einem aufstrebenden Ast
Standard

Hi,

Danke für die Antwort.
Leider ändert das nichts.

Der erste curl_exec wird definitiv 2x ausgeführt!

Beim ersten Aufruf wird der Benutzer erfolgreich mit neuer Userid von plesk angelegt. Danach wird durch den zweiten Aufruf erfolgreich dieser Userid die Domain zugewiesen.

Dann wird wieder, warum auch immer, der erste ausgeführt.
Dass weiß ich deshalb, weil plesk einen Fehler zurückliefert.
Somit auch keine neue Userid.

Daher kommt auch innerhalb der Funktion createCustomer eine Fehlermeldung.

Denn im Array gibt es Customer/ADd/id nicht!

Stephan22 ist offline   Mit Zitat antworten
Alt 21.10.2011, 13:18  
Neuer Benutzer
 
Registriert seit: 20.10.2011
Beiträge: 10
PHP-Kenntnisse:
Fortgeschritten
Stephan22 befindet sich auf einem aufstrebenden Ast
Standard

Jemand eine Idee ?
Stephan22 ist offline   Mit Zitat antworten
Alt 21.10.2011, 13:35  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

bitte nicht drängeln ... die Leute hier haben auch noch andere Sachen zu erledigen - wir helfen freiwillig und nicht im Akkort
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 21.10.2011, 13:38  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.168
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

zu was ist denn so was gut ??

PHP-Code:
$retval                        $retval;

$retval                        $retval['packet']['customer']['add']['result']['id']; 
entflechte doch mal Deine tausend retvals.

Zitat:
Ich aktualisiere die Seite und Rufe die Datei auf.
Browser-Cache ?

Zitat:
Lösche ich den Benutzer inclusive Domain und führe die Datei erneut aus, klappt es wieder wie davor. Es erscheint "test".
Und dadrunter dann eine Fehlermeldung von Plesk, dass der Benutzer bereits exisitert. Ist ja klar.. Wurde ja bereits eingetragen..
Du findest es einleuchtend, daß gemeldet wird, daß der User bereits existiert obwohl Du ihn gelöscht hast ????
__________________
Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.

Geändert von Koala (21.10.2011 um 13:43 Uhr).
Koala ist gerade online   Mit Zitat antworten
Alt 21.10.2011, 15:31  
Neuer Benutzer
 
Registriert seit: 20.10.2011
Beiträge: 10
PHP-Kenntnisse:
Fortgeschritten
Stephan22 befindet sich auf einem aufstrebenden Ast
Standard

Entschuldige bitte! Wollte nicht wirklich drängeln. Natürlich ist mir klar dass hier alles Freiwillig läuft !
@Koala:
Die tausend retvals sind nur dort vorhanden, da ich oft das array abändere (während des Programmierens).
Natürlich wird das alles "bereinigt".

Am browser-cache kann dies leider nicht liegen. Ich habe mich leider etwas schwer ausgedrückt in meinem Beitrag.
Zu dem "einleuchdend" hier eine weitere Erklärung. Denn es ist durchaus "einleuchtend" auf der anderen Seite her aber nicht *g*.

Nochmal zur Erklärung auf "programmiertechnischer Weiße". Es ist echt nicht einfach zu Erklären was das Problem ist.

1.) Ich lösche Benutzer mit login "web4"
2.) Jetzt rufe ich die Datei "create_Plesk.php" (siehe unten)
3.) Anschließend wird durch die Aufgerufene Funktion createCustomer() aufgerufen. Durch diese wird der Neue Benutzer "web4" angelegt (dass funktioniert)
4.) das return beendet die Funktion und springt eine ebene höher zur vorherigen Funktion.
5.) Diese Funktion ruft anschließend die addHosting() funktion auf. Diese erstellt die Domain (dass funktioniert)
6.) Jetzt bekomme ich eine Fehlermeldung angezeigt die auf folgende Zeile verweist (Fehlermeldung "id" nicht vorhanden im Array)
PHP-Code:
$retval                        $retval['packet']['customer']['add']['result']['id']; 
Einfach deswegen weil ich den Fehler "user already exists" erhalte.
Dies ist allerdings unlogisch. Da diese Zeile bereits abgearbeitet wurde und NICHT nochmal durchlaufen werden soll.

Setze ich nun unter print "3"; also über das curl_exec ein exit; Erhalte ich auf dem Display die ausgabe von "test-test3"
Setze ich das exit; unter print "4" erhalte ich die Fehlermeldung bei Punkt 6

Also scheint es, dass das curl_exec irgendwie diese Funktion erneut aufruft.

Das macht für mich keinen sinn.

Ich danke euch allen und Entschuldige mich nochmals für das "drängeln" dass sollte so gar nicht gemeint sein!

Danke & Gruß Stephan

create_Plesk.php:
PHP-Code:
<?
include("./pleskAPI.class.php");
$Plesk = New PleskAPI();
$Plesk->createHosting(array());
?>

Geändert von Stephan22 (21.10.2011 um 15:45 Uhr).
Stephan22 ist offline   Mit Zitat antworten
Alt 21.10.2011, 18:46  
Neuer Benutzer
 
Registriert seit: 20.10.2011
Beiträge: 10
PHP-Kenntnisse:
Fortgeschritten
Stephan22 befindet sich auf einem aufstrebenden Ast
Standard

Ich hab ein wenig gefummelt..

Es ist also so, dass der Teil "addHosting" für den Reload verantwortlich ist.
Bedeutet, entferne ich ALLES bis auf das senden von "addHosting" aktualisiert sich die Seite und es kommt der Fehler "domain already exists".

Aber wieso sorgt der XML-Teil von addHosting für einen Reload und der XML-Teil von createCustomer nicht?

Daaanke
Stephan22 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] CURL und HTTPS Verbindung funel1 PHP Einsteiger 5 28.07.2011 20:53
Webseite soll online bleiben! Kleevina Off-Topic Diskussionen 12 05.02.2011 20:18
[Erledigt] cURL Upload Probleme bei unterschiedlichen Servern iits PHP-Fortgeschrittene 3 25.10.2010 18:11
curl drives me crazy unicl PHP Tipps 2010 16 24.10.2010 13:06
Mit curl Bilder anzeigen AllOnline PHP Tipps 2010 2 03.02.2010 22:48
mit cURL webseite richtig anzeigen KaVo PHP Tipps 2009 3 12.10.2009 18:00
[Erledigt] curl post GTA26 PHP Tipps 2009 1 11.03.2009 20:09
Curl mit Server-IP fettyteddy PHP-Fortgeschrittene 1 10.03.2009 21:01
Curl mehrere URLs öffnen in einer Curl Session. Buschdieb PHP Tipps 2008 8 20.12.2008 13:01
CURL funktieonieren nicht bazik PHP-Fortgeschrittene 12 07.11.2008 09:43
Webseite auslesen Katrin PHP Tipps 2006 6 21.04.2006 20:43
[Erledigt] PHP nachträglich mit CURL Support ausstatten PHP-Fortgeschrittene 2 20.12.2004 16:19
cURL: Webseite einlesen PHP Tipps 2004 1 14.07.2004 00:17

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
plesk api class php, php curl refresh, php curl seite refresh, curl aktualisieren, curl aufruf in einer webseite

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:41 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum