Определение файлового каталога;XAMPP - PullRequest
1 голос
/ 25 марта 2012

Я использую XAMPP для Mac.

Когда я впервые начал работать с PHP, я определял свой каталог с помощью переменной:

 $root = "http://localhost/~aaron/SiteFolder/"; // Dev
 $root = "http://www.sitename.com/";            // Live

Это будет работать, но очень неприятно комментировать один из них, в зависимости от того, редактирую ли я сайт разработчика или живой сайт.

Я постепенно перехожу к привычкам ООП и хочу максимизировать эффективность, если это вообще возможно. Поэтому я пытаюсь определить ROOT с текущим каталогом, как показано здесь:

define("ROOT", dirname( __FILE__ ) . DIRECTORY_SEPARATOR);

Это выводит:

/Users/aaron/Sites/SiteFolder/

Это не совсем полезно для меня, когда я работаю на сайте разработчиков, потому что я хочу иметь возможность использовать ROOT в качестве префикса для своих изображений, файлов и т. Д.

Это явно не сработает:

<img src="/Users/aaron/Sites/SiteFolder/images/charizard.png">

Что мне нужно сделать, чтобы исправить эту проблему, чтобы правильно определить мой каталог?

Ответы [ 3 ]

0 голосов
/ 25 марта 2012

при использовании CodeIgniter в файле config.php есть переменная config:

$config["base_path"] = "/projects/mysite/"; //relative to http://localhost

и вспомогательная функция:

function base_url(){
     return $config["base_path"];
}

, а в ваших URL вы используете ее как

если вы используете smarty:

<img src="{base_url()}assets/images/1.jpg">

или прямой php:

<img src="<?php echo base_url();?>assets/images/1.jpg">

и когда вы загружаете свой сайт в Интернет, просто измените свой базовый URL на:

$config["base_path"] = "/";

и все снова работает.

0 голосов
/ 25 марта 2012

Исходя из ваших комментариев в моем другом ответе, вот что вы могли бы сделать:

Вы можете создать простую страницу установки и спросить пользователя, где он планирует разместить ваше веб-приложение.

Затем вы можете установить эту переменную в базе данных или что-то в этом роде.

Многие веб-приложения делают это: Wordpress, Joomla приходят на ум.

EDIT:

Вы также можете попытаться создать URL с помощью переменной php $ _SERVER. Вы можете получить хост, порт, чтобы построить URL.

К сожалению, это может быть проблемой, если кто-то решит разместить ваше веб-приложение не в корне домена субдомена.

Что-то вроде 'http://domain/yourwebapphere/'

Вы не сможете обнаружить это без указания пользователем. Если вы использовали одну конечную точку и использовали htaccess для перенаправления URL-адресов, вам все равно нужно указать базовый URL-адрес в htacess, чтобы он правильно перенаправлял.

EDIT2:

Хорошо, если вы действительно хотите создать URL-адрес динамически, вот некоторый код psuedo о том, как это сделать.

$protocol = parse_server_protocol($_SERVER['server_protocol']);
$port = $_SERVER['port']
$host = $_SERVER['server_name'];
//For use case where the app is not hosted at root of domain ("http://domain.com/test") for example
$urlroot = parse_root($_SERVER["REQUEST_URI"]);

$siteurl = buildRootUrl($protocol, $port, $host, $urlRoot);

//Now save that root url in the database.

Если вы используете htacess для создания чистых URL, ваше приложение должно знать, как записать baseurl в том случае, если он не размещен в корне домена.

0 голосов
/ 25 марта 2012

Поскольку это URL-адрес тега изображения, вы не можете просто определить корневой каталог изображения как define('ROOT', '/images/')?

Прямо сейчас вы получаете путь к каталогу.

EDIT:

Извините, я немного неправильно понял вопрос. Предположим, вы говорите об общедоступных ресурсах, таких как изображения на вашем веб-сервере, на которые вы хотите сослаться.

Тогда вы можете определить свой корень как базовый URL?

define('ROOT', 'http://localhost/') или define('ROOT', 'http://dev.sitename/') или define('ROOT', 'http://localhost/testsite/')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...