включить () это не работает

#php #apache #zend-framework #include-path

#php #apache #zend-framework #включить-путь

Вопрос:

У меня проблема в том, что на сервере функция 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
Я понятия не имею, как заставить это работать. Справка
Я использую zend framework, и этот файл находится в библиотеке (параллельно zend -libraries — directory, но он тоже не хочет работать без включаемого каталога :/


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

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

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

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

И это неправильный путь, страница не пуста, похоже, что все работает нормально. Это означает, что что-то не так с этой библиотекой IntelliSMS, она не работает с моим сервером, но я не знаю почему? Возможно, сервер блокирует отправку sms или что-то в этомроде? У вас есть какие-нибудь идеи? Эта библиотека из http://intellisms.co.uk/sms-gateway/php-sdk Может быть, проблема в том, что ему нужен модуль расширения OpenSSL? Что я должен сделать, чтобы это начало работать?

Комментарии:

1. просто используйте include('/home/…');

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

3. Что возвращает скрипт IntelliSMS.php ? То есть, завершается ли он с return инструкцией (которая должна использоваться для вашего использования) или это echo что-то (чего будет недостаточно для вашего использования)?

Ответ №1:

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

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

Комментарии:

1. хммм, я изменил права на чтение и выполнение, и это все еще не работает :/ Я добавлю все права и проверю…

Ответ №2:

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

Ответ №3:

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

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

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

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

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

Ответ №4:

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

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

равно этому

 include FALSE;
  

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

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

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

Комментарии:

1. У меня есть: if (file_exists(‘/home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php ‘)) { echo «1 работает<br/>»; } else { echo «Файл 1 не существует<br/>»; } if(включить ($_SERVER[DOCUMENT_ROOT].»/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php «) == ‘OK’) { echo ‘ВКЛЮЧЕНИЕ 1 работает<br/>’; } else { echo ‘Сбой шага 1<br/>’; } if(включить («/home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php «) == ‘OK’) { echo ‘ВКЛЮЧИТЬ 2 работает<br/>’; } else { echo ‘Сбой шага 2<br/>’; } И все то же самое