Article ID: 119796, created on Jan 21, 2015, last review on Mar 13, 2015

  • Applies to:
  • Plesk

Symptômes

Une erreur se produit lors de l'accès à l'option du domaine Parallels Plesk (Plesk) :

Internal error: /var/www/vhosts/domain.tld/httpdocs is out of webspace
Message     /var/www/vhosts/domain.tld/httpdocs is out of webspace
File    Webspace.php
Line    378
Type    PleskFatalException

Go To Previous Page

Search for related Knowledge Base articles

Cause

Incohérence dans la base de données Plesk.

Résolution

  1. Sélectionnez tous les utilisateurs FTP (y compris ceux par défaut) du domaine problématique :

    mysql>  select  d.id,d.webspace_id as webspace_id,d.name as domain,su.login,su.home,h.www_root from domains d join hosting h on h.dom_id=d.id left join ftp_users fu on fu.dom_id=d.id join sys_users su on (fu.sys_user_id=su.id or h.sys_user_id=su.id)  where d.name='domain.tld' order by d.name;
        +-----+-------------+------------------+---------------+----------------------------------+-------------------------------------------+
        | id  | webspace_id | domain           | login         | home                             | www_root                                  |
        +-----+-------------+------------------+---------------+----------------------------------+-------------------------------------------+
        | 259 |           0 | domain.tld | user_login | /var/www/vhosts/domain.tld | /var/www/vhosts/domain.tld/httpdocs |
        +-----+-------------+------------------+---------------+----------------------------------+-------------------------------------------+
    1 row in set (0.00 sec)
    
  2. Recherchez le "sys_user" par défaut en suivant les entrées des tables hosting et sys_users :

    mysql>  select dom_id,sys_user_id,www_root from hosting where dom_id=259;
    +--------+-------------+-------------------------------------------+
    | dom_id | sys_user_id | www_root                                  |
    +--------+-------------+-------------------------------------------+
    |    259 |         261 | /var/www/vhosts/domain.tld/httpdocs |
    +--------+-------------+-------------------------------------------+
    1 row in set (0.00 sec)
    
    mysql> select id,login,home from sys_users where id=261;
    +-----+---------------+----------------------------------+
    | id  | login         | home                             |
    +-----+---------------+----------------------------------+
    | 261 |   user_login  |    /var/www/vhosts/domain.tld    |
    +-----+---------------+----------------------------------+
    1 row in set (0.00 sec)
    
  3. Il y a plusieurs incohérences typiques :

    • "www_root" dans la table hosting ne correspond pas au "home" de l'utilisateur système par défaut :

      mysql>  select dom_id,sys_user_id,www_root from hosting where dom_id=259;
      +--------+-------------+-------------------------------------------+
      | dom_id | sys_user_id | www_root                                  |
      +--------+-------------+-------------------------------------------+
      |    259 |         261 | /var/www/vhosts/domain12345.tld/httpdocs |
      +--------+-------------+-------------------------------------------+
      1 row in set (0.00 sec)
      
      mysql> select id,login,home from sys_users where id=261;
      +-----+---------------+----------------------------------+
      | id  | login         | home                             |
      +-----+---------------+----------------------------------+
      | 261 |   user_login  |    /var/www/vhosts/domain.tld    |
      +-----+---------------+----------------------------------+
      1 row in set (0.00 sec)
      

    Vous pouvez corriger cela en mettant à jour www_root :

    mysql> update hosting set www_root='/var/www/vhosts/domain.tld' where dom_id=259;
    
    • "home" pour un utilisateur FTP supplémentaire ne se trouve pas dans le dossier "home" de l'utilisateur système principal. Dans ce cas, la requête de l'étape 1 ci-dessus renvoie plusieurs résultats et home est différent pour deux utilisateurs système :

      mysql>  select  d.id,d.webspace_id as webspace_id,d.name as domain,su.login,su.home,h.www_root from domains d join hosting h on h.dom_id=d.id left join ftp_users fu on fu.dom_id=d.id join sys_users su on (fu.sys_user_id=su.id or h.sys_user_id=su.id)  where d.name='domain.tld' order by d.name;
      
      +-----+-------------+------------+-------------+-----------------------------+--------------------------------------+
      | id  | webspace_id | domain     | login       | home                        | www_root                             |
      +-----+-------------+------------+-------------+-----------------------------+--------------------------------------+
      | 259 |           0 | domain.tld | user_login  | /var/www/vhosts/domain.tld  | /var/www/vhosts/domain.tld/httpdocs  |
      | 260 |           0 | domain.tld | user2_login | /var/www/vhosts/domain2.tld | /var/www/vhosts/domain2.tld/httpdocs |
      +-----+-------------+------------+-------------+-----------------------------+--------------------------------------+
      

    Vous pouvez corriger cela pour l'utilisateur système problématique :

    mysql>  update sys_users set home='/var/www/vhosts/domain.tld/user_folder' where login='user2_login';
    

    Notez que /var/www/vhosts/domain.tld/user_folder doit exister dans ce cas.

    • Le répertoire "www_root" d'un domaine dans l'espace Web se trouve hors du dossier "www root" :

      mysql>  select  d.id,d.webspace_id as webspace_id,d.name as domain,su.login,su.home,h.www_root from domains d join hosting h on h.dom_id=d.id left join ftp_users fu on fu.dom_id=d.id join sys_users su on (fu.sys_user_id=su.id or h.sys_user_id=su.id)  where d.name='domain.tld' order by d.name;
      
      +-----+-------------+------------+-------------+-----------------------------+--------------------------------------+
      | id  | webspace_id | domain     | login       | home                        | www_root                             |
      +-----+-------------+------------+-------------+-----------------------------+--------------------------------------+
      | 259 |           0 | domain.tld | user_login  | /var/www/vhosts/domain.tld  | /var/www/vhosts/domain.tld/httpdocs  |
      | 260 |         259 | domain.tld | user2_login | /var/www/vhosts/domain2.com | /var/www/vhosts/domain2.com/httpdocs |
      +-----+-------------+------------+-------------+-----------------------------+--------------------------------------+
      

    Dans cet exemple, l'entrée avec webspace_id=0 correspond au domaine principal de l'espace Web. Tous les domaines enfants ont l'espace Web webspace_id=259 et doivent se trouver dans le dossier /var/www/vhosts/domain.tld. Vous pouvez corriger cela en définissant webspace_id=0 pour domain2.com :

    mysql> update domains set webspace_id=0 where id=260;
    

    Autre solution, vous pouvez corriger "www_root" dans la table "hosting" :

    mysql> update hosting set www_root='/var/www/vhosts/domain.tld/domain2_fodler' where dom_id=260;
    

    Si vous appliquez la méthode ci-dessus, assurez-vous également que le dossier "/var/www/vhosts/domain.tld/domain2_fodler" existe sur le système de fichiers.

a914db3fdc7a53ddcfd1b2db8f5a1b9c 56797cefb1efc9130f7c48a7d1db0f0c e0aff7830fa22f92062ee4db78133079 caea8340e2d186a540518d08602aa065

Email subscription for changes to this article
Save as PDF