include () не работает - PullRequest
       18

include () не работает

2 голосов
/ 22 апреля 2011

У меня проблема в том, что на сервере функция include () не хочет работать, и я понятия не имею, почему?

У меня есть:

 if (file_exists('/home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php')) {
    echo "1 works";
} else {
    echo "The file 1 does not exist";
}

if(include "$_SERVER[DOCUMENT_ROOT]/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php" == 'OK')
{
    echo 'INCLUDE 1 works';
}
else
{
    echo 'Step 1 fail';
}
if(include '/home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php' == 'OK')
{
    echo 'INCLUDE 2 works';
}
else
{
    echo 'Step 2 fail';
}

Возвращает: 1 works Step 1 fail Step 2 fail Iпонятия не имею, как заставить его работать.ПОМОГИТЕ Я использую Zend Framework, и этот файл находится в библиотеке (параллельно с Zend -libraries - каталогом, но он не хочет работать и без каталога include: /


Это действительно странно для меня, каккогда я добавляю:

include ("/home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php");

И это правильный путь, у меня есть только пустая страница! Но когда я добавляю:

include ("/homedddd/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php");

И это неправильный путь, страница не пуста, этоПохоже, работает нормально. Это означает, что что-то не так с этой библиотекой IntelliSMS, она не работает с моим сервером, но я не знаю почему? Возможно, сервер блокирует отправку смс или что-то? У вас есть какие-либо идеи?1017 * Может быть, есть проблема, что ему нужен модуль расширения OpenSSL? Что мне сделать, чтобы начать работу?

Ответы [ 4 ]

1 голос
/ 22 апреля 2011

В первом блоке кода, который вы обнаружили, существует /home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php.Когда вы пытаетесь включить этот файл, вы никогда не используете точно такую ​​же строку.Если вы это сделаете, это должно работать.

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

0 голосов
/ 22 апреля 2011

Вот что вы делаете неправильно: вы пытались включить FALSE в каждую попытку. Делать что-то вроде этого

include '/path/to/file.php' == "OK";

равняется этому

include FALSE;

Это, вероятно, то, что вы хотели сделать

if((include '/path/to/file.php') == "OK") { echo("works"); }

Другие пользователи SO игнорировали этот факт, потому что ваш путь очень длинный, сравнение скрывается в вашем блоке кода.

0 голосов
/ 22 апреля 2011

Вы никогда не должны использовать \ обратную косую черту в именах путей.Используйте косую черту /, которая работает на серверах Windows и Un * x.

Кроме того, имя базового каталога вряд ли будет одинаковым на обоих серверах.Сделайте его перемещаемым и замените /home/p003/htdocs на DOCUMENT_ROOT следующим образом:

include "$_SERVER[DOCUMENT_ROOT]/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php";

Обратите внимание на двойные кавычки.

Я бы порекомендовал также по возможности избегать имен файлов в смешанном регистре.

0 голосов
/ 22 апреля 2011

Вы изменили свои косые черты. Это может быть проблемой.

...