Перестройка структуры кода дает мне проблему включения в php - PullRequest
3 голосов
/ 15 октября 2011

Я реструктурировал мой уже работающий код.Моя ранняя структура каталогов была следующей:

  • web
    • css
      • style.css
    • модель
      • db_functions.inc
    • view
      • view_functions.inc
    • контроллер
    • index.php

Вот фрагмент кода, который работал:

<?php
    $pageTitle = "Citee.me";

    //include view functions
    include ('view/view_functions.inc');
    //incldue db functions
    include ('model/db_functions.inc');
    doHtmlHeader($pageTitle);
    doBody();
    testMySQL();
    doHtmlFooter();
?>

Теперь я реструктурировал код так:

  • web
    • модель
      • db_functions.inc
    • view
      • view_functions.inc
    • контроллер
  • public
    • css
      • style.css
    • js
    • images
    • index.php

Теперь я изменил свой код index.php следующим образом (я закомментировал функции db, чтобы сузить проблему):

 <?php
    $pageTitle = "Citee.me";

    //include view functions
    include ('/citee/web/view/view_functions.inc');
    //incldue db functions
    //include ('./model/db_functions.inc');
    doHtmlHeader($pageTitle);
    //doBody();
    //testMySQL();
    doHtmlFooter();
?>

Я получаю ошибку:

PHP Warning:  include(/citee/web/view/view_functions.inc): failed to open stream: No such file or directory in /Library/WebServer/Documents/citee/public/index.php on line 6

PHP Warning:  include(): Failed opening '/citee/web/view/view_functions.inc' for inclusion (include_path='.:/usr/lib/php') in /Library/WebServer/Documents/citee/public/index.php on line 6

PHP Fatal error:  Call to undefined function doHtmlHeader() in /Library/WebServer/Documents/citee/public/index.php on line 9

Не знаю, почему я получаю эту ошибку.Мой путь включения неверен?Я пробовал разные комбинации, но не помогло.

Заранее спасибо.

Ответы [ 3 ]

7 голосов
/ 15 октября 2011

PHP - ваш друг, он дал вам полный путь к месту исполнения вашего кода:

/Library/WebServer/Documents/citee/

not

/citee/

Тот факт, что вы не можете получить доступ к файлам вне вашего веб-корня, не означает, что PHP не смотрит за пределы вашего веб-корня.

3 голосов
/ 15 октября 2011

Во втором примере ваши пути являются абсолютными и начинаются с "/ citee". Но сообщения об ошибках показывают, что ваши файлы находятся в «/ Library / WebServer / Documents / citee». Если вы используете абсолютный путь, вы должны использовать правильный путь.

0 голосов
/ 15 октября 2011

PHP жалуется, что путь /citee/web/view/view_functions.inc не существует, и я тоже сомневаюсь в этом.Вы можете cd /citee/web/view/?Бьюсь об заклад, не.

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

Таким образом, вместо /citee/web/view/view_functions.inc вы можете перейти от пути index.php к правильному относительному пути: ../web/view/view_functions.inc (.. означает «перейти в каталог в дереве», что означаетон перейдет в вашу папку "citee", а затем перейдет в папку "web" и т. д.)

...