2015-06-12 4 views
0

Мой сайт находится на сервере Apache. Путь: /var/www/example.com/public_htmlApache: Нет такого файла или каталога

Я пытаюсь получить доступ к файлу в папке public_html.

PHP

require('/application/config/development/dev_config.php'); 

ОШИБКА

PHP Предупреждение: требуется (/application/config/development/dev_config.php): не удалось не удалось открыть поток: Нет такого файла или каталога в /var/www/example.com/public_html/index.php в строке 53

Когда я попытался сделать это:

require('application/config/development/dev_config.php'); 

Все работает нормально. Но я использовал косую черту во всем своем проекте. Есть ли способ изменить этот параметр в файле .htaccess? поэтому я могу получить к нему доступ, используя /.

Apache Config File

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName example.com 
    ServerAlias www.example.com 
    DocumentRoot /var/www/example.com/public_html 
    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost> 
+0

как я знаю 'require' не зависит от apache, также вы можете использовать поиск и замену в своем редакторе, это займет некоторое время, но это лучше. – robert

+0

Кстати, некоторые IDE могут искать весь проект, чтобы найти и заменить – robert

+0

'/' - общий термин. Это может быть на каждой странице. –

ответ

0

/приложение не существует, то текущая папка вы хотите:

/var/www/example.com/public_html/application/config/development/dev_config.php 

Начав с/вы рассказываете систему, чтобы посмотреть на очень корневой путь вашей файловой системы (где/var, например).

Причина применения/конфигурации/разработка/dev_config.php работает, как вы вызываете папки по отношению к текущей папке, как вы уже в public_html

+0

Yeah .. Я знаю все это. Мне просто нужно решение для этого, если оно есть. Поскольку в проекте очень сложно изменить. На самом деле, я перемещаю текущий веб-сайт на другой сервер. –

1

Apache и PHP Понимание / Иными словами

Apache просматривает веб-корень в корневой папке (/var/www/example.com/public_html/), в то время как PHP есть возможность получить доступ к всю систему (так что '/' означает '/'). Это означает, что в то время как

<a href="/home.php">...</a> 

действительно означает /var/www/example.com/public_html/home.php,

header('Location:/home.php'); 

будет означать home.php файл в корневой каталог системы сервера.

Решение

Самый простой (ИМХО) способ избежать печатала всю структуру веб-каталогов при указании веб-файла в PHP является использование переменной $_SERVER['DOCUMENT_ROOT'].Это запрашивает Apache, чтобы найти путь к корню веб-каталога, и вы можете добавить остальную часть пути файла, как если бы вы разговаривали с Apache. Например:

header('Location:'.$_SERVER['DOCUMENT_ROOT'].'/home.php'); 

будет понятно PHP означает /var/www/example.com/public_html/home.php.

Смежные вопросы