Как Вы знаете, что корректный путь использует в PHP require_once () оператор

Вы также можете использовать NOT EXISTS:

SELECT t.*
FROM temp t
WHERE NOT EXISTS (SELECT 1 FROM temp2 t2 WHERE t2.a = t.a);
12
задан Léo Léopold Hertz 준영 17 August 2009 в 18:04
поделиться

9 ответов

Текущий рабочий каталог для PHP является каталогом, в котором расположен названный файл сценария. Если Ваши файлы были похожи на это:

/A
   foo.php
   tar.php
   B/
       bar.php

Если Вы называете foo.php (исключая: http://example.com/foo.php), рабочий каталог будет/A/. Если Вы называете bar.php (исключая: http://example.com/B/bar.php), рабочий каталог будет/A/B/.

Существует то, где это становится хитрым. Давайте скажем, что foo.php - такой:

<?php
require_once( 'B/bar.php' );
?>

И bar.php:

<?php
require_once( 'tar.php');
?>

Если мы назовем foo.php, то bar.php успешно назовет tar.php, потому что tar.php и foo.php находятся в том же каталоге, который, оказывается, рабочий каталог. Если Вы вместо этого назовете bar.php, то он перестанет работать.

Обычно Вы будете видеть любого во всех файлах:

require_once( realpath( dirname( __FILE__ ) ).'/../../path/to/file.php' );

или с файлом конфигурации:

// config file
define( "APP_ROOT", realpath( dirname( __FILE__ ) ).'/' );

с остальной частью использования файлов:

require_once( APP_ROOT.'../../path/to/file.php' );
23
ответ дан 2 December 2019 в 04:03
поделиться

Мне нравится делать это:

require_once(dirname(__FILE__)."/../_include/header.inc");

Тем путем Ваши пути могут всегда быть относительно текущего расположения файла.

8
ответ дан 2 December 2019 в 04:03
поделиться

Я использую dirname(__FILE__) вещь как bobwienholt больше всего время, но что это могло заплатить, чтобы сделать, имеют основную точку входа, которая загружает весь Ваш другой код, который определяет постоянный refereing к корню проекта, т.е.

define("ROOT",dirname(__FILE__).'/' ); 

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

require(ROOT . "/lib/tool/error.php"); 

примечание,

необходимо ДЕЙСТВИТЕЛЬНО избежать путей с ".. /" в начале их, они не относительно файла, а относительно того, где Вы, и это создает код поврежденной задницы.
 cd foo
 php bar/baz.php 
 -> some error saying it cant find the file
 cd bar 
 php baz.php 
 -> suddenly working.

Важный

Если Вы используете ".. /" нотация, это берет полное незнание PHP, Включают Путь, И ТОЛЬКО рассматривает, где человек, кого выполняет его.

3
ответ дан 2 December 2019 в 04:03
поделиться

Я включаю этот код наверху каждой страницы:

//get basic page variables
$self=$_SERVER['PHP_SELF']; 
$thispath=dirname($_SERVER['PHP_SELF']);
$sitebasepath=$_SERVER['DOCUMENT_ROOT'];

//include the global settings, variables and includes

include_once("$sitebasepath/globals/global.include.php");

Включайте и потребуйте оба, берут или относительный путь или весь внедренный путь. Я предпочитаю работать с полным путем и делаю все свои ссылки как включать оператор выше. Это позволяет мне вводить общий переменный $sitebasepath, который обрабатывает учетную запись определенная информация, которая может измениться с машины на машину и затем просто ввести путь от webroot, т.е./globals/whatever_file.php

Я также использую переменную $self в формах, которые могут назвать себя для обработки ввода данных.

Надежда, которая помогает.

2
ответ дан 2 December 2019 в 04:03
поделиться

Если у Вас есть достаточные права доступа, попытайтесь изменить PHP's include_path установка для целого сайта. Если Вы не можете сделать этого, необходимо будет или направить каждый запрос через тот же Сценарий PHP (например, Apache использования mod_rewrite), или необходимо будет использовать сценарий "инициализации", который настраивает include_path:

$includeDir = realpath(dirname(__FILE__) . '/include'); 
ini_set('include_path', $includeDir . PATH_SEPARATOR . ini_get('include_path'));

После того, как тот файл включен, используйте пути относительно включать каталога:

require_once '../init.php'; // The init-script
require_once 'MyFile.php'; // Includes /include/MyFile.php
1
ответ дан 2 December 2019 в 04:03
поделиться

Путь файла PHP, который требуют в оригинале, ДОБИРАЕТСЯ, или POST является по существу 'рабочим каталогом' того сценария. Любые "включенные" или "необходимые" сценарии наследуют это как свой рабочий каталог также.

Я буду или использовать полные пути в, требуют операторов или изменяют include_path PHP для включения любого пути в мое приложение, которое я могу хотеть использовать для сохранения меня дополнительный ввод. Вы найдете это в php.ini.

include_path = ".:/list/of/paths/:/another/path/:/and/another/one"

Я не знаю, выручит ли это Вас в этом конкретном экземпляре, но волшебных константах как ФАЙЛ, и DIR может пригодиться, если когда-либо необходимо знать путь, конкретный файл работает в.

http://us2.php.net/manual/en/language.constants.predefined.php

0
ответ дан 2 December 2019 в 04:03
поделиться

Единственное место, от которого я видел путь, оцененный, является файлом, который Вы в настоящее время редактируете. У меня никогда не было проблем с ним, но если Вы, Вы могли бы хотеть предоставить больше информации (версия PHP, ОС, и т.д.).

0
ответ дан 2 December 2019 в 04:03
поделиться

С тех пор требуют, и require_once очень похожи для включения и include_once, вся документация отправляется под "включать" областью документа функций на php.net От той страницы

Файлы для включения сначала разыскиваются в каждой include_path записи относительно текущего рабочего каталога, и затем в каталоге текущего сценария. Например, если Ваш include_path является библиотеками, текущий рабочий каталог является/www/, Вы включали include/a.php и существует, включают "b.php" в тот файл, b.php сначала смотрят в/www/libraries/и затем в/www/include/. Если имя файла начинается с./или../, это смотрят только в текущем рабочем каталоге.

Далее, можно найти, что весь ток включает пути путем выполнения "php-i" из командной строки. Можно отредактировать включать путь в файле php.ini, и также через ini_set (). Можно также выполнить php_info () функция на странице для получения распечатки огибающего Вара, если CLI неудобен.

1
ответ дан 2 December 2019 в 04:03
поделиться

Смотрите на функцию getcwd. http://us2.php.net/getcwd

-1
ответ дан 2 December 2019 в 04:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: