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()
Спасибо за любую помощь.
Ответы
Ответ 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