Автор Тема: php ziparchive  (Прочетена 11213 пъти)

consolebg

  • Напреднали
  • *****
  • Публикации: 14
    • Профил
php ziparchive
« -: Dec 29, 2022, 12:25 »
Здравейте колеги,

Досега изобщо не ми се беше налагало да разархивирам с php ама и до там го докарахме. Естествено като всеки закорявал програмист почвам с документацията.

https://www.php.net/manual/en/class.ziparchive.php

Са тука особенното при мене е че съм с версия 7.4 и според документацията

https://www.php.net/manual/en/zip.installation.php

As of PHP 7.4.0, in order to use these functions you must compile PHP with zip support by using the --with-zip configure option. Previously, zip support had to be enabled by using the --enable-zip configure option. As of PHP 7.4.0, the bundled libzip is removed.

Са хубаво обаче аз версията я инсталирах от пакетния мениджър на Ubuntu, не съм я билдвал ръчно.

След кратко търсене се оказа че си има пакет php7.4-zip хубаво инсталирах, рестартнах apache обаче все тая. Интересното е че в примерните който дават се почва така :

$zip = new ZipArchive;

Хубаво обаче apache ми хвърля грешка че няма такава константа. Почвам да импровизирам :
$zip = new ZipArchive();

Дава ми няма такъв клас. И в тоя момент се сетих да го пусна тоя код през cli:


<?php
$zip = new ZipArchive;

var_dump($zip);
?>


Резултата е следния

object(ZipArchive)#1 (5) {
  ["status"]=>
  int(0)
  ["statusSys"]=>
  int(0)
  ["numFiles"]=>
  int(0)
  ["filename"]=>
  string(0) ""
  ["comment"]=>
  string(0) ""
}

Значи излиза че през cli работи ама като се извика през уеб сървъра не работи.
Някой да има обяснение защо това е така?
Активен

consolebg

  • Напреднали
  • *****
  • Публикации: 14
    • Профил
Re: php ziparchive
« Отговор #1 -: Dec 29, 2022, 12:35 »
Като ъплоуднах само чистия файл с кода, който е извън проекта и го ръннах само него си сработи. Са явно проблема идва от самия проект, което ще бъде много озадачаващо търсене на проблема  [_]3
Активен

consolebg

  • Напреднали
  • *****
  • Публикации: 14
    • Профил
Re: php ziparchive
« Отговор #2 -: Dec 29, 2022, 12:45 »
Сам си разгадах мистерията,

$zip = new ZipArchive; - не работи
$zip = new ZipArchive; - работи

На пръв поглед изглеждат еднакви, ама явно има нещо което не се вижда с просто око. Но забавно губене на 3 часа.
Активен

Acho

  • Напреднали
  • *****
  • Публикации: 5278
  • Distribution: Slackware, MikroTik - сървърно
  • Window Manager: console only
    • Профил
    • WWW
Re: php ziparchive
« Отговор #3 -: Dec 29, 2022, 13:22 »
И аз се кьорих кьорих, ама като ги гледам - еднакви са двата реда.
Активен

CPU - Intel Quad-Core Q8400, 2.66 GHz; Fan - Intel Box; MB - Intel G41M-T2; RAM - DDR2-800, Kingston HyperX, 2X2048 MB; VC - onboard, Intel G41 Express Chipset; HDD - Toshiba, 500 GB, SATAII; SB - Realtek HD Audio; DVD-RW - TSSTcorp DVD-RW; LAN - Realtek PCI-E GBE Controller; PSU - Fortron 350 Watt.

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 8791
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Re: php ziparchive
« Отговор #4 -: Dec 29, 2022, 17:01 »
Аз си мислех за кирилски знак, но не е това:

Код
GeSHi (Bash):
  1. Tor mode activated. Every command will be torified for this shell.
  2. devuan@devuan:~$ echo "$zip = new ZipArchive;" > 1
  3. devuan@devuan:~$ echo "$zip = new ZipArchive;" > 2
  4. devuan@devuan:~$ diff 1 2
  5. devuan@devuan:~$

Двата низа са напълно еднакви.
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

consolebg

  • Напреднали
  • *****
  • Публикации: 14
    • Профил
Re: php ziparchive
« Отговор #5 -: Dec 29, 2022, 17:04 »
И аз се кьорих кьорих, ама като ги гледам - еднакви са двата реда.

Това което аз подозирам е че един символите между p,A,c или е съм го написал на кирилица  ;D щото ми хвърляше тая грешка

PHP Parse error:  syntax error, unexpected '\xc2\xa0ZipArchive'

или има нещо между new и ZipArchive което не е space, ама не ми се занимаваше да ги преглеждам.

Аз си мислех за кирилски знак, но не е това:

Код
GeSHi (Bash):
  1. Tor mode activated. Every command will be torified for this shell.
  2. devuan@devuan:~$ echo "$zip = new ZipArchive;" > 1
  3. devuan@devuan:~$ echo "$zip = new ZipArchive;" > 2
  4. devuan@devuan:~$ diff 1 2
  5. devuan@devuan:~$

Двата низа са напълно еднакви.

Съдейки по грешката сигурно между new и ZipArchive е някъв друг символ а не space
Активен

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 8791
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Re: php ziparchive
« Отговор #6 -: Dec 29, 2022, 17:20 »
Всъщност е възможно. На трети разряд на шпацията се намира „непреносима шпация“. Никак не е невъзможно да даде грешка.
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

Acho

  • Напреднали
  • *****
  • Публикации: 5278
  • Distribution: Slackware, MikroTik - сървърно
  • Window Manager: console only
    • Профил
    • WWW
Re: php ziparchive
« Отговор #7 -: Dec 29, 2022, 17:38 »
Копирах ги от тук, и ги сравнявам в конзолата, един по един символите. И на мен ми показва едни и същи ASCII кодове за всички символи от двата реда.
Активен

CPU - Intel Quad-Core Q8400, 2.66 GHz; Fan - Intel Box; MB - Intel G41M-T2; RAM - DDR2-800, Kingston HyperX, 2X2048 MB; VC - onboard, Intel G41 Express Chipset; HDD - Toshiba, 500 GB, SATAII; SB - Realtek HD Audio; DVD-RW - TSSTcorp DVD-RW; LAN - Realtek PCI-E GBE Controller; PSU - Fortron 350 Watt.

consolebg

  • Напреднали
  • *****
  • Публикации: 14
    • Профил
Re: php ziparchive
« Отговор #8 -: Dec 29, 2022, 18:47 »
Копирах ги от тук, и ги сравнявам в конзолата, един по един символите. И на мен ми показва едни и същи ASCII кодове за всички символи от двата реда.

Възможно при пействането тук, обработващия скрипт да ги е зачистил преди да запази в базата.
Активен

jet

  • Напреднали
  • *****
  • Публикации: 3473
  • Distribution: debian
  • Window Manager: kde
    • Профил
Re: php ziparchive
« Отговор #9 -: Dec 29, 2022, 18:59 »
копирай ги тук в блок за код
Активен

..⢀⣴⠾⠻⢶⣦⠀
  ⣾⠁⢠⠒⠀⣿⡁
  ⢿⡄⠘⠷⠚⠋
  ⠈⠳⣄⠀⠀⠀⠀  Debian, the universal operating system.

spec1a

  • Напреднали
  • *****
  • Публикации: 3862
    • Профил
Re: php ziparchive
« Отговор #10 -: Dec 30, 2022, 10:56 »
   Копирай редовете в някой текстов редактор (напр. gedit),запиши във
файл (кръсти го напр. file) и после пусни от терминал:

hexdump -C file

и всичко ще лъсне ...
Активен