Странная настройка php

sunchess

Новичок
Странная настройка php

Подскажите в чем может быть проблема
есть файл index.php
в нем
include('index2.php');

в index2.php

echo '123';
return;

По всей вероятности скрипт должен вернуть
123
Но этого не происходит, пустой экран :(

если return; не использовать то 123 есть

Я так понимаю это где-то в настройках php ini?
Подскажите пожалуйста?
 

WP

^_^
return; вне функции означает завершение выполнение текущего файла. Какая версия PHP?
 

sunchess

Новичок
версия 4.4.1
return; вне функции означает завершение выполнение текущего файла. Какая версия PHP?
это я знаю

Может я чего не так объясняю
Начнем с начала:)
Есть файл к которому подключается другой файл

//********index.php**********
include('index2.php');


//*********index2.php*****************

echo '123';
return;
//или die();
echo '456';

если сделать таким образом то выводиться пустой экран

если прописать в index.php

echo '123';
die();
echo '456';

то вывод 123
т.е. если функция возвпата будет в подключаемом файле то вывода на экран нет

-~{}~ 06.06.06 14:40:

Tor
Настройка в php.ini
 

HEm

Сетевой бобер
http://ru.php.net/return

aaa.php:
PHP:
<?
 include('bbb.php');
 echo 'a';
?>
bbb.php:
PHP:
<?
  echo 'b';
  return;
  echo 'c';
?>
выводит 'ba', как положено
в ини-файле нет ничего, влияющего на это

действительно странно... но нужно ли тебе на самом деле использование этого?
 

JD

Новичок
открой секрет, а зачем тебе там ретурн?
ретурн в инклуде работает так же как и в функции.

file1.php
PHP:
<?php
$asd = include('file2.php');
echo $asd;
?>
file2.php
PHP:
<?php
/* custom code */
return '123';
?>
file1.php выведет 123
 

HEm

Сетевой бобер
JD
ретурн вне функций может быть использован как exit();, отличие в том, что экзит полностью прекращает выполнение скрипта, а ретурн только того, в чьем теле он прописан.

If called from the global scope, then execution of the current script file is ended. If the current script file was include()ed or require()ed, then control is passed back to the calling file. Furthermore, if the current script file was include()ed, then the value given to return() will be returned as the value of the include() call. If return() is called from within the main script file, then script execution ends.
 

sunchess

Новичок
HEm

aaa.php:
<?
include('bbb.php');
echo 'a';
?>

bbb.php:
<?
echo 'b';
return;
echo 'c';
?>

выводит 'ba', как положено
в ини-файле нет ничего, влияющего на это
Вот мне и нужно чтобы так работало :)
а оно не работает, в принципе я так и думал что php установлен криво, просто это приложение работало на всех хостингах так как надо а на одном проблемы покатили.

Зачем return;?
Просто для прекращения далнейшей работы подключаемого файла и возврата всех переменных в нем определенных, без разницы что использовать return или die результат один пустой экран :(
 

sunchess

Новичок
Автор оригинала: Andreika
error_reporting(E_ALL); первой строчкой index.php напиши
я понимаю к чему ты клонишь :), пробовал, я тоже сначало подумал что ошибка и только не выводится на экран, только все пробовал и вывод всех ошибок и тд, но нет :(
http://www.kafemoskva.ru/_spider/index1.php - вот пример

в подключаемом файле

PHP:
...
if($_SESSION['login']!=true)
 {
  $templet->loade_templet('login.tpl');

      $templet->loade_var(
      array(
            '%TITLE%' => 'Вход в систему',
            '%NOT_LOGET%' => $not_login
          ));

      $templet->do_body();
      echo $templet->body;
      //die();
 }
...
стоит //die(); раскоментировать все пустой экран :(

-~{}~ 06.06.06 15:54:

еще один момент апач настроен почему то таким образом что .htaccess нужно прописывать расширения файлов для php может в этом проблема?
Хотя этот файл действует не только на диреторию в которой находится а на все вложенные...
 
Сверху