web-dev-qa-db-fra.com

Laravel 5.1 PHP Classe DOMDocument () non trouvée

J'utilise la classe intégrée DOMDocument () de PHP pour effectuer quelques opérations simples de déchirure de sites Web . Cependant, cela fonctionne sur mon site 4.2, mais pas sur mon 5.1 (les deux sont sur la même installation de PHP).

Voici l'erreur:

Classe 'App\Http\Controllers\III_Ranks\DOMDocument' introuvable

Voici mon contrôleur:

<?php

namespace App\Http\Controllers\III_Ranks;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;
use Illuminate\Http\Response;

class RanksController extends Controller 
{
    public function getRanks()
    {
        $list1 = new DOMDocument();
        //etc...
    }
}

Je suppose que c'est un problème d'espace de noms, mais je ne sais pas comment accéder à DOMDocument ()

Merci pour toute aide.

19
user3023925

Dans Laravel 5.1, vous devez préfixer le nom de la classe avec le préfixe d'espace de noms global '\'.

Donc, votre code mis à jour:

<?php

namespace App\Http\Controllers\III_Ranks;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;
use Illuminate\Http\Response;

class RanksController extends Controller 
{
    public function getRanks()
    {
        $list1 = new \DOMDocument();
        //etc...
    }
}
33
GeorgeQ

Pour moi, afin de résoudre l'erreur: DOMDocument() class not found. Je devais installer l’extension DOM .

Si vous utilisez PHP 5:

Vous pouvez le faire sur Debian/Ubuntu en utilisant:

Sudo apt-get install php5-dom

Et sur Centos/Fedora/Red Hat:

yum install php-xml

Si vous utilisez PHP 7:

Pour Ubuntu:

apt-get install php7.0-xml

Pour CentOS/Fedora/Red Hat:

yum install php70w-xml
6
Hyder B.

Testé en Laravel 5.4 

vous pouvez utiliser le mot clé use:

En haut du fichier avant de définir la classe, vous pouvez écrire use DOMDocument; au lieu de new \DOMDocument();

Par exemple:

<?php

namespace App\Http\Controllers\III_Ranks;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;
use Illuminate\Http\Response;

use DOMDocument;

class RanksController extends Controller {
...
1
Phoenix404

J'ai eu ce problème dans laravel 5.6 sur un serveur avec ubuntu 16.04 , et j’ai résolu ce problème en installant le paquet xml pour la version php7.1, cela ne fonctionne pas pour moi dans la version php7.2. Je ne sais pas pourquoi.

1. - Assurez-vous que la version 7.1 de php est installée, j'utilise cette commande pour sélectionner la version correcte de php dans Ubuntu: 

update-alternatives --set php /usr/bin/php7.1

Remarque: Si vous n'avez pas installé la version php7.1, devez-vous l'installer avant la commande ci-dessus, dans ce cas, vous pouvez utiliser cette commande: apt-get install php7.1

2. - Pour installer le package XML, j'ai utilisé la commande suivante:

apt-get install php7.1-xml

3. - Redémarrez votre serveur Apache, dans mon cas avec cette commande:

service Apache2 restart

J'espère être utile, cela m'a sauvé la journée.

0

J'ai eu le même problème avec Amazon Linux 2 (LAMP) avec Laravel Framework

Veuillez trouver ci-dessous les étapes pour résoudre les problèmes:

 Sudo systemctl stop httpd 
 Sudo yum install  php-xml
 Sudo systemctl start httpd
0