Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: подскажите почему так происходит
 
 автор: Zezst   (18.04.2013 в 10:05)   письмо автору
 
 

есть такой код:
<?php
$file 
__FILE__;
echo 
$file;

$list explode('\\'$file);

echo 
"<br>";
$max count($list) - 1;

echo 
$list[$max];
//проверочка

echo "<br>";
echo 
nl2br(htmlspecialchars(file_get_contents("$list[$max]")

написан для виндового сервера. вначале он должен вывести полный путь до самого себя. второй строчкой количество элементов в массиве. ну и далее выводит в браузер свое содержимое. соответсвенно на виндовом сервере все работает как надо.
а на линуксовом сервере, что бы все корректно работало в функции explode() требуется заменить слеш на обратный. но вот что интересно, положил скрипт как есть на линукс сервер и он отработал как надо. за исключением того что второй строкой вместо количества элементов в массиве снова вывел полный путь до себя.
вот мне и интересно почему так?
http://hw-p.ru/test00.php пример на линукс сервере

  Ответить  
 
 автор: Igorek   (18.04.2013 в 13:30)   письмо автору
 
   для: Zezst   (18.04.2013 в 10:05)
 

>что бы все корректно работало в функции explode() требуется заменить слеш на обратный
достаточно использовать константу DIRECTORY_SEPARATOR, чтобы работало независимо от ОС
<?php
$list 
explode(DIRECTORY_SEPARATOR$file); 

>за исключением того что второй строкой вместо количества элементов в массиве снова вывел полный путь до себя.
>вот мне и интересно почему так?

почему он вообще должен выводить кол-во элементов массива?! вы выводите последний элемент массива $list, а он, в вашем случае, равен значению переменной $file, т.к. в строке не было найдено ни одного символа по-которому explode должен разбивать строку

  Ответить  
 
 автор: Zezst   (18.04.2013 в 13:42)   письмо автору
 
   для: Igorek   (18.04.2013 в 13:30)
 

упс.
точно. простите. может не совсем корректно задал вопрос. в винде указание файла через полный путь выдает ошибку, а линуксе нормально открывает. вот хотелось уточнить- это особенность OS, или настройки сервера?


Пы.Сы: за константу спасиб.

  Ответить  
 
 автор: Igorek   (18.04.2013 в 18:09)   письмо автору
 
   для: Zezst   (18.04.2013 в 13:42)
 

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

если вы про
<?php
echo nl2br(htmlspecialchars(file_get_contents("$list[$max]")

то, во-первых, кавычки там не нужны,а во-вторых, еще раз взгляните на то, что содерижтся в $list[$max] в обоих случаях

  Ответить  
 
 автор: Zezst   (18.04.2013 в 19:13)   письмо автору
 
   для: Igorek   (18.04.2013 в 18:09)
 

Эх согласен. Тяжело у меня сегодня с русским языком.
Ошибки нет никакой.
Есть сервера на винде и на линуксе. И там и там висит по несколько сайтов.
В линуксе указание файла от корня диска прокатывает, в винде нет.
Почему так происходит? Что это? Особенность ОСь или настройки сервера. В обоих случаях сервер Апач.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования