2012-11-22 4 views
1

Я столкнулся с проблемой PATH при создании небольшого веб-сайта. Сайт состоит из нескольких стандартных страниц в разных папках и нескольких других в папке с именем _include. Теперь у меня есть три файла, включенные на каждую страницу - menu.php, header.php и footer.php - все три содержащиеся в папке _include. Я использовал set_include_path, и он работает довольно хорошо, насколько PHP идет. Однако есть проблемы, когда дело доходит до HTML. В файле header.php у меня есть этот синтаксис <img src="_pics/header.png" width="XXX" height="YYY" />Включить путь в PHP и HTML

Код работает нормально, и изображение загружается до тех пор, пока все файлы, содержащие header.php, находятся в одном каталоге. Но если я попытаюсь включить его в страницу в субдире, то изображение не загрузится, что довольно очевидно, поскольку уровень каталога теперь изменился.

Так что мой вопрос в том, как я могу решить эту проблему, чтобы HTML-пути работали в включенных PHP-файлах, независимо от того, где они размещены на сайте?

ответ

4

Самое простое решение всегда использовать абсолютные пути для активов по отношению к веб-корня:

<img src="/_pics/header.png" width="XXX" height="YYY" /> 
     ^absolute path 

Это относится ко всем такие вещи, как изображения, файлов JavaScript, CSS файлы и т.д.

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

+0

Ничего не изменил. Он по-прежнему пытается найти изображение относительно пути, в котором я нахожусь. Если я нахожусь на уровне корня, он работает, но если я опускаюсь на один уровень, он не может найти изображение, потому что теперь он пытается найти его в «subdir/_pics вместо этого. – Sandokan

+0

@Sandokan Нет, когда php генерирует html с таким путем, браузер пытается найти «/ _pics/header.png» с вашего веб-сервера, как только он загрузит html.Местоположение вашего местоположения и местоположение изображения никак не связаны. – jeroen

+0

Ну, какова бы ни была проблема, она по-прежнему не работает. Тот же результат. Страницы в корневой директории загружают изображение в порядке. Страницы в любой другой папке dont - они дают ошибку 404. – Sandokan

-1

Если ваши пути статичны, вы можете использовать переменные php document_root или server_name.

<?php echo "<img src=\"http://".$_SERVER['SERVER_NAME']."/_pics/header.png\" width="XXX" height="YYY" />"; ?> 
<?php echo "<img src=\"".$_SERVER['DOCUMENT_ROOT']."/_pics/header.png\" width="XXX" height="YYY" />"; ?> 

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

-1

Использовать полный путь, например: http: // имя_домена/путь. Это возможно то, что вы ищете.

0

Вы должны понимать разницу между absolute and relative URL.

Код работает нормально, и изображение загружается до тех пор, пока все файлы , содержащие header.php, находятся в одном каталоге. Но если я попытаюсь использовать , включите его в страницу в субдире, то изображение не загрузится, что довольно очевидно, поскольку теперь уровень каталога изменился.

<img src="_pics/header.png" width="XXX" height="YYY" /> 

Как он отображает при попытке включить в суб

СПРАВОЧНИК

<img src="subdir/_pics/header.png" width="XXX" height="YYY" />

Как вы знаете, картинка не помещается под subdir поэтому картинка не загружена.

В этом случае вы должны использовать абсолютный URL-адрес, который начинается с http:// и заканчивается с picname.png для примера.

+0

Не уверен теперь, но разве вы не утверждаете, что это то, о чем говорит джеран? – Sandokan

+0

@Sandokan: Я никогда не говорил, что я прав, что вы сами это делаете. –

+0

Ваша претензия кажется более точной, поскольку она работает только из одной папки. – Sandokan

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