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.
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...
}
}
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
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 {
...
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.
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