Подтвердить что ты не робот

Laravel 5.1 Класс PHP DOMDocument() не найден

Я использую встроенный в класс DOMDocument() класс PHP для создания простого веб-утилизации. Однако он работает на моем сайте 4.2, но не в моем 5.1 (оба находятся на одной установке PHP).

Здесь ошибка:

Класс 'App\Http\Controllers\III_Ranks\DOMDocument' не найден

Здесь мой контроллер:

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

Я полагаю, что это проблема с пространством имен, но я понятия не имею, как получить доступ к DOMDocument()

Спасибо за любую помощь.

4b9b3361

Ответ 1

В Laravel 5.1 вы должны префикс имени класса с префиксом глобального пространства имен '\'.

Итак, ваш обновленный код:

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

Ответ 2

Для меня, чтобы решить ошибку: DOMDocument() class not found. Я должен был установить расширение DOM.

Если вы используете PHP 5:

Вы можете сделать это в Debian/Ubuntu, используя:

sudo apt-get install php5-dom

И на Centos/Fedora/Red Hat:

yum install php-xml

Если вы используете PHP 7:

Для Ubuntu:

apt-get install php7.0-xml

Для CentOS/Fedora/Red Hat:

yum install php70w-xml

Ответ 3

Протестировано в Laravel 5.4

вы можете использовать ключевое слово use:

В верхней части файла перед определением класса вы можете написать use DOMDocument; вместо new \DOMDocument();

Например,

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

Ответ 4

У меня была эта проблема в laravel 5.6 на сервере с Ubuntu 16.04, и я решил эту проблему, установив пакет xml для версии php7.1, это не работает для меня в версии php7.2. Я не знаю почему.

1. - Убедитесь, что у вас установлена версия 7.1 php, я использую эту команду, чтобы выбрать правильную версию php в ubuntu:

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

Примечание. Если у вас не установлена версия php7.1, вам нужно установить ее перед вышеприведенной командой, в этом случае вы можете использовать эту команду: apt-get install php7.1

2. - Для установки пакета XML я использовал следующую команду:

apt-get install php7.1-xml

3. - Перезагрузите сервер apache, в моем случае с помощью этой команды:

service apache2 restart

Я надеюсь быть полезным, это спасло мой день.

Ответ 5

У меня была такая же проблема с Amazon Linux 2 (LAMP) с фреймворком laravel

Пожалуйста, найдите ниже шаги решить проблемы:

 sudo systemctl stop httpd 
 sudo yum install  php-xml
 sudo systemctl start httpd