Автор Тема: Чудеса с include_path  (Прочитано 5457 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
Чудеса с include_path
« : 19 Апреля 2003, 23:43:18 »
У меня такой вот вопросик по инклюдам (и рекваерам соответственно ;)):
Есть вот такик вот файлики:

index.php
GLOBALS/global.php
GLOBALS/config.php
GLOBALS/functions.php


Файл index.php:

<?php
require_once("GLOBALS/global.php");
bla-bla-bla...
?>


Файл GLOBALS/global.php:

<?php
require_once("config.php");
require_once(
"functions.php");
?>


Так вот, когда скрипт запускаю на своём компьютере (Apache/1.3.27 (Win32) PHP/4.3.0) всё работает отлично, но когда закачиваю на хостинг (*никсовый), начинает ругаться в global.php мол не могу реквайрить, нету таких файлов.
Немного помучался с include_path, сейчас в global.php добавил такие строчки:

$include_path 
".;g:/www/GLOBALS/";
//$include_path =".:/virt/homes/mysitename/htdocs/GLOBALS/";
//$include_path = ".:/var/htdocs/mysitename/GLOBALS/";
ini_set("include_path"$include_path);

Но как по мне, способ довольно кривой, вот я и хочу узнать нормальный.
Кстати, у меня по дефолту include_path = ".", а у хостинга include_path = "";
Подскажите нормальное решение, если оно существует.

=================================

Уже после того, как я это дописал (ещё в оффлайне), проверил на хостинге ещё пару фич:
-Установка include_path через .htaccess (php_value include_path ".:/var/htdocs/mysitename/GLOBALS/")не работает (никаких ошибок, но и никакого эффекта). Не знаю, в чем причина. Скорее всего в хостинге, потому что на локальном сервере работает отлично.
-Если рядом с index.php создать файл phpinfo.php (с понятным содержанием :)), то видно, что как-бы в директории / (в корне) include_path=".:/usr/local/lib/php", а в директории GLOBALS - include_path="". При этом никаких других файлов .htaccess, переназначающих инклюд_паз, замечено не было.
Ну не чудеса?
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Чудеса с include_path
« Ответ #1 : 20 Апреля 2003, 12:43:55 »
а хостер разрешает переопределять настройки php через .htaccess ?
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
Чудеса с include_path
« Ответ #2 : 20 Апреля 2003, 13:58:13 »
С хостером не общался, потому что хостинг фактически не мой, но платный.
Поэтому на счет настроек php через .htaccess я не уверен, но когда поставил

CharsetDisable On
CharsetRecodeMultipartForms Off

то картинки стали загружаться отлично.
Да, кстати, инфа по хостингу:

[b]System:[/b] FreeBSD ferrari.rql.net.ua 4.4-RELEASE FreeBSD 4.4-RELEASE #0: Tue Oct 30 12:33:35 EET 2001_____shark@ferrari2.rql.net.ua:/usr/src/sys/compile/MONITOR__i386
[b]SERVER_SOFTWARE:[/b] Apache/1.3.22 (Unix) PHP/4.2.1 PHP/3.0.18 AuthMySQL/2.20 rus/PL30.9
[b]Server API:[/b] CGI

Если что забыл - скажите, я добавлю.
Могу вообще линк на phpinfo.php дать... просто надоело уже решать такие задачи через задницу (простите)...
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Чудеса с include_path
« Ответ #3 : 20 Апреля 2003, 14:51:16 »
цитата из мануала:
Цитировать
When using PHP as an Apache module, you can also change the configuration settings using directives in Apache configuration files (e.g. httpd.conf) and .htaccess files (You will need "AllowOverride Options" or "AllowOverride All" privileges)

а у тебя cgi-сборка
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
Чудеса с include_path
« Ответ #4 : 20 Апреля 2003, 15:01:06 »
Так-с, тут причина ясна, спасибо!
Но есть ещё много вопросов, типа
Цитировать

Если рядом с index.php создать файл phpinfo.php (с понятным содержанием :)), то видно, что как-бы в директории / (в корне) include_path=".:/usr/local/lib/php", а в директории GLOBALS - include_path="".


И вообще, получается для меня единственный способ - это задавать include_path ini_set\'ом в global.php? :(
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн MrGreeN

  • просто зелёный
  • Постоялец
  • ***
  • Сообщений: 195
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Чудеса с include_path
« Ответ #5 : 22 Апреля 2003, 17:23:19 »
Кстати тоже про инклуды...
У Пирамидина написано (include()+URL)-------
Windows-версия PHP в настоящее время не поддерживает доступ к удалённым файлам с помощью этой функции, даже если allow_url_fopen включена.
А чего делать, если необходимо инклудить скрипт с другого сервака?

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
Чудеса с include_path
« Ответ #6 : 22 Апреля 2003, 19:18:51 »
ИМХО самый простой способ - скачать его себе, записать во временный файл и его (временный файл) инклюдить. Но тут есть проблемы типа "инклюдинг инклюдов" со вложенными инклюдами и привязкой к путям (временный файл должен лежать строго в определенном месте, например в месте выполнения вызывающего его скрипта, а это бывает проблематично...).
[off]Интересно, а как пхп вообще работает с вложенными инклюдами у удаленных файлов?[/off]
Можно попробовать пропарсить скаченный файл регекспами, но по-моему это уже извращение.
Ещё можно его просто eval()\'нуть...
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Чудеса с include_path
« Ответ #7 : 22 Апреля 2003, 19:57:04 »
FreeSpace
Цитировать
то задавать include_path ini_set\'ом в global.php?
вероятно да

MrGreeN
тебе именно php-скрипт инклюдить или простой ХТМЛ ?
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Чудеса с include_path
« Ответ #8 : 23 Апреля 2003, 10:42:23 »
если у тебя все равно все руками прописывается, то и писал бы
require_once($include_path."functions.php");
и не парился.

Оффлайн MrGreeN

  • просто зелёный
  • Постоялец
  • ***
  • Сообщений: 195
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Чудеса с include_path
« Ответ #9 : 23 Апреля 2003, 13:18:20 »
Макс
PHP
RomikChef
тогда получиться проблемка как у
FreeSpace\'a, но с приколом поприкольнее...
$include_path = ".;path";
ini_set("include_path", $include_path);
 require_once($include_path."инклуд.php");
?>
Выводит-----
Parse error: parse error, unexpected T_STRING in путь_к_странице_из_которой_вызываю on line там_где_ini_set

P.S. Да попрописывал бы вручную так код в этом инклуде меняется постоянно (типа горячие новости, да есшо и статистика)...Вот и геморой на одно место...

Оффлайн MrGreeN

  • просто зелёный
  • Постоялец
  • ***
  • Сообщений: 195
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Чудеса с include_path
« Ответ #10 : 23 Апреля 2003, 13:21:18 »
FreeSpace
На счёт вложеныхи нклулов----
Не знаю как у кого, но у меня не работает...

Оффлайн MrGreeN

  • просто зелёный
  • Постоялец
  • ***
  • Сообщений: 195
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Чудеса с include_path
« Ответ #11 : 23 Апреля 2003, 13:57:59 »
С ini_set разобрался
Но вопрос остаётся прежний (насчёт инклуда с удалённой машины), не видно этого файлика и хоть об дорогу бейся...
Конект пытаюсь сделать через прокси причём и мой сервак и удалённый лежат в одной локальной сетке...

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
Чудеса с include_path
« Ответ #12 : 23 Апреля 2003, 19:41:03 »
Ладно люди, всем спасибо!
Действительно, проблема у меня не настолько значительная и ручками можно прописать абсолютный путь на хостинге, но просто по-моему это не очень удобно.

MrGreeN
Вложеные инклюды в локальных скриптах должны работать нормально!
Ну а на удаленных - вообще не тестил, но похоже, что там они не работают.
Если очень надо, как я уже говорил, можешь попытаться пропарсить регекспами и скачивать все инклюдящиеся файлы к себе... геморрой, однако...
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Чудеса с include_path
« Ответ #13 : 23 Апреля 2003, 19:51:02 »
FreeSpace
ручками прописать - это ОЧЕНЬ удобно.
если учесть, что часто в РНР доступна переменная $DOCUMENT_ROOT, то сделать можно все полным автоматом.
Было бы жлание - сделать, а не языком чесать

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
Чудеса с include_path
« Ответ #14 : 23 Апреля 2003, 20:06:21 »
Про $DOCUMENT_ROOT - признаю, моя вина, не обратил внимания.
Но ещё не факт, что сайт относительно $DOCUMENT_ROOT\'a у меня и у хостинга будет в одном и том же месте лежать. Но это уже совсем другая тема...
Ещё раз спасибо за помощь!

[off]
А грубить было не обязательно... Неужели для тебя, RomikChef, каждый, кто задает вопрос на этом форуме, либо "продвинутый" ламер, либо лентяй? Это я про "было бы желание..." и про твоё пренебрежительное отношение к вопрошающим практически в каждом топике...
[/off]
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28