PHP 5.6 — Ошибка с PHP 5.6 до PHP 7.2.4. Include_once не работает

Видео, иллюстрирующее проблему в реальном времени, доступно здесь:

ссылка на сайт: https://www.youtube.com/watch?v=IaTJNS31w6A&Функция = youtu.be

Я изучал веб-разработку. Новичок в PHP.

Я создал сайт на локальном сервере WAMP. По умолчанию WAMP использует PHP 5.6. Когда версия меняется на 7.2.4, сайт не работает. Предупреждения:

Предупреждение: include_once (/app/config.inc.php): не удалось открыть поток: нет
такой файл или каталог в E: \ wamp64 \ www \ ziurfreelance2 \ index.php на
строка 3

а также

Предупреждение: include_once (): не удалось открыть файл /app/config.inc.php для
включение (include_path = ‘.; / path / to / php / pear / .;’) в
E: \ wamp64 \ www \ ziurfreelance2 \ index.php в строке 3

Я изменил include_path в php.ini, просто пытаясь найти решение. Это не сработало.

Файлы правильно размещены (на видео видно, что сайт работает отлично), и ничего больше не делается, кроме изменения версий PHP.

Файлы правильно размещены (на видео видно, что сайт работает просто отлично), отличаются только версии PHP.

Дерево проекта здесь:
https://i.pinimg.com/originals/c9/52/68/c9526844ba7a80ba63baeaccab1965e7.png

Я действительно надеюсь, что вы можете мне помочь. Возможно, как я уже говорил, ошибка связана с apache, эта информация была не очень ясной и конкретной.

Даже определение константы в том же файле (обратите внимание, что include_once вызывает config.inc.php, где находятся все остальные используемые константы) и, возможно, это работает, но почему версия ломает его?

Вот index.php (находится в корневом каталоге):

<?php

include_once "/app/config.inc.php";

$componentes_url = parse_url($_SERVER["REQUEST_URI"]);
$ruta = $componentes_url['path'];
$partes_ruta = explode("/", $ruta);
$partes_ruta = array_filter($partes_ruta);
$partes_ruta = array_slice($partes_ruta,0);

$ruta_elegida = '/paginas/404.php';


if($partes_ruta == null){

$ruta_elegida = '/paginas/home.php';

}

//para subpaginas de primer nivel

else if(count($partes_ruta) == 1){

switch($partes_ruta[0]){

case 'aviso-legal';
$ruta_elegida = '/paginas/aviso-legal.php';
break;

case 'sobre-mi';
$ruta_elegida = '/paginas/bio.php';
break;

case 'blog';
$ruta_elegida = '/paginas/blog.php';
break;

case 'contacto';
$ruta_elegida = '/paginas/contacto.php';
break;

case 'diseno-grafico';
$ruta_elegida = '/paginas/diseno-grafico.php';
break;

case 'diseno-web';
$ruta_elegida = '/paginas/diseno-web.php';
break;

case 'fotografia';
$ruta_elegida = '/paginas/fotografia.php';
break;

case 'modelado';
$ruta_elegida = '/paginas/modelado.php';
break;

case 'video-y-animacion';
$ruta_elegida = '/paginas/video-y-animacion.php';
break;

case 'ziur11235813213455fotos';
$ruta_elegida = '/paginas/subida-fotos.php';
break;
}

}

include_once $ruta_elegida;

А вот и .htaccess:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^.*$ ./index.php

Спасибо за ваше время.

1

Решение

Вы должны использовать __DIR__ магическая константа генерировать правильные абсолютные пути для файлов. Например:

include_once __DIR__ . '/../app/config.inc.php';

getcwd() может дать вам неожиданные результаты — он вернет другое значение для этих 2 вызовов:

php index.php
php myapp/index.php

так как ты звонишь index.php из двух разных мест. __DIR__ всегда будет возвращать одно и то же значение независимо от того, где вы используете PHP-скрипт

0

Другие решения

слэш / для пути к корневому каталогу, так что просто удалите косую черту / на вашем пути включения

include_once "app/config.inc.php";
0

Я мог бы решить эту проблему, добавив константу в начале index.php так:

define("RAIZ",getcwd());

и использовать его во всех вызовах, что-то вроде этого:

include_once RAIZ."\app\config.inc.php";

И сайт просто работает в обеих версиях PHP. НО, у меня есть другая проблема, которая все еще связана с include_Path. Я задам новый вопрос об этом.

Это решение выглядит не очень хорошо для меня, но сейчас это работает.

Плз, если кто-то из вас имеет лучшую идею или может сказать мне, что не так с версиями, пожалуйста, скажите мне.

Еще раз спасибо за ваше время.

-1
По вопросам рекламы [email protected]