Автор Гілка: проблема з basename в php  (Прочитано 2724 раз)

Відсутній Volodymyrko

  • Графоман
  • ****
  • дописів: 370
  • Карма: +0/-0
  • I Like FreeBSD !
є
# cat xxxx.php
<?
$f="/usr/local/www//htdocs/dm/file/Контрагент.avi";
$d=basename($f);
echo "$d \n" ;
 ?>
під root-ом
# php < xxxx.php
Контрагент.avi
-- нормально

# sudo -u wwwrun php  < xxxx.php
.avi
тобто неповне імя ...

і також
# chsh wwwrun
Changing login shell for wwwrun.
Enter the new value, or press return for the default.
        Login Shell [/bin/false]: /bin/bash
Shell changed.
 # su wwwrun
wwwrun@> php < xxxx.php
Контрагент.avi
wwwrun@> exit
exit
 # sudo -u wwwrun php  < xxxx.php
.avi
 #

такий код виокристовується на одній із сторінок сайтуу і відповідно в браузері такі проблеми з відображенням назв не англійськими буквами
Suse-10.2
apache2-mod_php5-5.2.0-10
apache2-prefork-2.2.3-20
apache2-2.2.3-20
php5-5.2.0-10
« Змінено: 2007-08-06 12:32:57 від vova07 »

Відсутній anatolijd

  • Графоман
  • ****
  • дописів: 325
  • Карма: +0/-0
Re: проблема з basename в php
« Відповідей #1 : 2007-08-06 16:26:06 »
Точно, є така проблема, і повязана вона з кодуванням.
Думаю схожі глюки можуть виникнути і з іншими php string-manipulation функціями.  :)

Cпробуй pathinfo(), мо' допоможе:

<?php
$path_parts 
pathinfo('/www/htdocs/index.html');

echo 
$path_parts['dirname'], "\n";
echo 
$path_parts['basename'], "\n";
echo 
$path_parts['extension'], "\n";
echo 
$path_parts['filename'], "\n"// since PHP 5.2.0
?>


Має дати такий вихлоп :
/www/htdocs
index.html
html
index


Відсутній Volodymyrko

  • Графоман
  • ****
  • дописів: 370
  • Карма: +0/-0
  • I Like FreeBSD !
Re: проблема з basename в php
« Відповідей #2 : 2007-08-07 08:56:19 »
Цитата
Має дати такий вихлоп :
та так воно і є, що з командної стрічки що через браузер , а от будь що на українській (та і рос. ) проблеми ...

Цитата
є така проблема, і повязана вона з кодуванням.
що то за проблема і як її можна вирішити ??

Відсутній cadca

  • Письменник
  • *****
  • дописів: 955
  • Карма: +0/-0
  • free like beer
Re: проблема з basename в php
« Відповідей #3 : 2007-08-07 09:57:22 »
Що заважає перекодувати basename за допомогою urlencode?
Ubuntu 20.04/18.04; CentOS 7.x

Відсутній Volodymyrko

  • Графоман
  • ****
  • дописів: 370
  • Карма: +0/-0
  • I Like FreeBSD !
Re: проблема з basename в php
« Відповідей #4 : 2007-08-07 10:17:10 »
Цитата
Що заважає перекодувати basename за допомогою urlencode?
щось я не зрозумів як це має виглядати ??? покажіть приклад ...

Відсутній cadca

  • Письменник
  • *****
  • дописів: 955
  • Карма: +0/-0
  • free like beer
Re: проблема з basename в php
« Відповідей #5 : 2007-08-07 14:16:16 »
Цитата
Що заважає перекодувати basename за допомогою urlencode?
щось я не зрозумів як це має виглядати ??? покажіть приклад ...
:o

[smiley=27.gif]
<?
$f = str_replace("%2F", "/", urlencode("/usr/local/www//htdocs/dm/file/Контрагент.avi"));
$d=basename($f);
echo "$d \n" ;
 ?>
« Змінено: 2007-08-07 14:19:11 від cadca »
Ubuntu 20.04/18.04; CentOS 7.x

Відсутній Volodymyrko

  • Графоман
  • ****
  • дописів: 370
  • Карма: +0/-0
  • I Like FreeBSD !
Re: проблема з basename в php
« Відповідей #6 : 2007-08-08 08:33:14 »
дуже дякую .. просто я  знаю PHP тільки дуже трошки  ... а деколи треба шось просте зробити, переробити чи доробити ..
(так помалу і вчусь )

ще добавити туди
$d=urldecode($d);і все нормально ... показує українські без проблем
« Змінено: 2007-08-08 08:33:36 від vova07 »