API: sites_ftp_user_add

#1
Hilfe, ich bin am verzweifeln.
Ich kann mit der API keinen FTP User anlegen (ISPConfig 3.1b2)
Fehlermeldung: directory_error_notinweb
PHP:
public function sitesFtpUserAdd($login = false)
    {
        // /var/www/clients/client0/web21
        $dir = '/var/www/clients/client' . $this->clientID . '/web' . $this->domainID;
        $params = [
            'server_id' => $this->serverID,
            'parent_domain_id' => $this->domainID,
            'username' => $this->ftpUserName,
            'password' => $this->ftpPass,
            'quota_size' => 0,
            'active' => 'y',
            'uid' => 'web' . $this->domainID,
            'gid' => 'client' . $this->clientID,
            'dir' => $dir
        ];
        if($login)
        {
            if(!$this->login())
            {
                error_log("Login failed");
                return false;
            }
        }
        try
        {
            $result = $this->soapClient->sites_ftp_user_add($this->sessionID, $this->clientID, $params);
            return is_numeric($result) ? true : false;
        }
        catch (Exception $ex)
        {
            $this->error[] = $ex->getMessage();
            return false;
        }
    }
Könnte es sich hier evtl. um einen Bug handeln?

Danke für's lesen - hoffe es gibt eine Lösung
 
Zuletzt bearbeitet:
#3
Hallo und danke Florian,
ja die Datei hatte ich mir bereits angeschaut. Da kann ich aber mit meinem mangelhaften Wissen nicht wirklich was feststellen (ausser, dass in Zeile 91 evtl. ein "=" fehlt).
Allerdings habe ich festgestellt, dass zwar nach dem Anlegen der Domain mittels "sites_web_domain_add" diese auch im Adminpanel erscheint, jedoch nicht der Pfad auf dem Server erstellt wird. Da ich keine Fehlermeldung erhalten hatte, habe ich das nicht kontrolliert. Also läuft da schon etwas verkehrt mit meinem Skript.
Werde jetzt mal versuchen herauszufinden, warum das Verzeichnis nicht erstellt wurde.
 

Till

Administrator
#4
steht denn der richtige pfad bei der domain in der datenbank? Am besten mal eine website im ispconfig interface anlegen, dann eine mit der api und dann die beiden in der web_domain tabelle vergleichen. Du kannst im $params array des api aufrufes alle felder außer den sys_* Feldern setzen.

Noch ein Hinweis zum web pfad: falls /var/www ein symlink ist, legt ispconfig keine Ordner an da der Pfad manipuliert worden sein könnte.
 
#5
steht denn der richtige pfad bei der domain in der datenbank?
Ich komme zwar einigermaßen mit Php zurecht, aber ISPConfig ist Neuland für mich :) Wie komme ich denn in die Datenbank rein (schäm)?
Ich habe mittels "sites_web_domain_get" die Daten ausgelesen, dementsprechend habe ich den $params Array angepasst. Hier ist auch der document_root passend.
Allerdings fällt mir hier auf, dass "added_date" und "added_by" leer ist, wenn ich über die API eine Domain anlege.
Ich teste mal was passiert, wenn ich die auch im $params übergebe.
Anfangs hatte ich in den Parametern nicht den "document_root" angegeben, da mir die Domain-ID zu der Laufzeit ja noch nicht bekannt war. Habe das entsprechend angepasst, aber das Verzeichnis wird trotzdem nicht angelegt....
 
#7
#8
Ok, also ins phpMyAdmin komme ich nun rein. Wenn ich die Einträge nun vergleiche, sehe ich dass alle Daten exakt gleich sind (ausser natürlich z.B. document_root, system_user). Allerdings gibt es einige Felder die in der über's Webinterface eingefügten Domain NULL sind und bei der über die API nur leer sind (e.g. apache_directives, ssl_*).
So, nun steh ich da wie der Ochs vorm Berg...
 

Werbung

Top