Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: include, require...
Форумы портала PHP.SU » » Вопросы новичков » include, require...

Страниц (1): [1]
 

1. Mad_Alex - 27 Сентября, 2011 - 09:39:45 - перейти к сообщению
Ну к примеру есть главный скрипт index.php и включаемый common.php

index.php
PHP:
скопировать код в буфер обмена
  1.  
  2. ....
  3. include('common.php');
  4.  
  5.  


common.php



можно ли из common.php узнать кто его include?
2. illy - 27 Сентября, 2011 - 09:43:13 - перейти к сообщению
по значению адресной строки
3. Mad_Alex - 27 Сентября, 2011 - 09:45:45 - перейти к сообщению
illy пишет:
по значению адресной строки


А подробнее?
common.php может подцепить и index.php и index2.php
как внутри common.php узнать кто его включил?
4. morosit - 27 Сентября, 2011 - 09:48:04 - перейти к сообщению
кажется можно параметр передать
PHP:
скопировать код в буфер обмена
  1. include('common.php?file=index');
5. Mad_Alex - 27 Сентября, 2011 - 09:51:50 - перейти к сообщению
morosit пишет:
кажется можно параметр передать
PHP:
скопировать код в буфер обмена
  1. include('common.php?file=index');


Вариант конечно... НО
Нужно видимо объяснить зачем это нужно.
Есть файл db.php он инклюдится куда попало и очень часто и при возникновении ошибки в sql хотелось бы знать из какого файла была попытка этот sql запустить.
6. Мелкий - 27 Сентября, 2011 - 10:05:59 - перейти к сообщению
morosit пишет:
кажется можно параметр передать

Нельзя. С точки зрения современных ФС - имя файла абсолютно корректно, его php искать и будет.

Mad_Alex пишет:
Есть файл db.php он инклюдится куда попало и очень часто и при возникновении ошибки в sql хотелось бы знать из какого файла была попытка этот sql запустить.

debug_print_backtrace видит инклюды, например.
7. OrmaJever - 27 Сентября, 2011 - 12:22:57 - перейти к сообщению
Mad_Alex напишите в common.php 2 строки
PHP:
скопировать код в буфер обмена
  1. echo $_SERVER['PHP_SELF'], '<br>';
  2. echo __FILE__;

и откройте index. На будущее будете знать.
$_SERVER['PHP_SELF'] - это скрипт который вызвали, а __FILE__ - это исполняемый файл.
8. Mad_Alex - 27 Сентября, 2011 - 16:50:25 - перейти к сообщению
Мелкий пишет:
debug_print_backtrace видит инклюды, например.


То шо надо!!!! СПАСИБА!!! Прыгаю до потолка
(Добавление)
OrmaJever пишет:
и откройте index. На будущее будете знать.
$_SERVER['PHP_SELF'] - это скрипт который вызвали, а __FILE__ - это исполняемый файл.


Это я давно знал. Ток вот такой красоты оно не дает (аж строчку показывает в вызывающем файле!):

PHP:
скопировать код в буфер обмена
  1.  
  2. #0 db->query(select * from wrongtable where info1 <> '') called at [/usr/local/apache2/htdocs/tmp/debug.php:13]
  3.  


Причем db - это объект, метод которого вызван из debug.php
Предложенный Вами метод дает только строчку из db.php, что в отладке не очень помогает.

Но все равно спасибо. Курю

 

Powered by ExBB FM 1.0 RC1