Linux за българи: Форуми

Програмиране => Web development => Темата е започната от: consolebg в Dec 29, 2022, 12:25



Титла: php ziparchive
Публикувано от: consolebg в 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 работи ама като се извика през уеб сървъра не работи.
Някой да има обяснение защо това е така?


Титла: Re: php ziparchive
Публикувано от: consolebg в Dec 29, 2022, 12:35
Като ъплоуднах само чистия файл с кода, който е извън проекта и го ръннах само него си сработи. Са явно проблема идва от самия проект, което ще бъде много озадачаващо търсене на проблема  [_]3


Титла: Re: php ziparchive
Публикувано от: consolebg в Dec 29, 2022, 12:45
Сам си разгадах мистерията,

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

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


Титла: Re: php ziparchive
Публикувано от: Acho в Dec 29, 2022, 13:22
И аз се кьорих кьорих, ама като ги гледам - еднакви са двата реда.


Титла: Re: php ziparchive
Публикувано от: go_fire в 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:~$

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


Титла: Re: php ziparchive
Публикувано от: consolebg в 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


Титла: Re: php ziparchive
Публикувано от: go_fire в Dec 29, 2022, 17:20
Всъщност е възможно. На трети разряд на шпацията се намира „непреносима шпация“. Никак не е невъзможно да даде грешка.


Титла: Re: php ziparchive
Публикувано от: Acho в Dec 29, 2022, 17:38
Копирах ги от тук, и ги сравнявам в конзолата, един по един символите. И на мен ми показва едни и същи ASCII кодове за всички символи от двата реда.


Титла: Re: php ziparchive
Публикувано от: consolebg в Dec 29, 2022, 18:47
Копирах ги от тук, и ги сравнявам в конзолата, един по един символите. И на мен ми показва едни и същи ASCII кодове за всички символи от двата реда.

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


Титла: Re: php ziparchive
Публикувано от: jet в Dec 29, 2022, 18:59
копирай ги тук в блок за код


Титла: Re: php ziparchive
Публикувано от: spec1a в Dec 30, 2022, 10:56
   Копирай редовете в някой текстов редактор (напр. gedit),запиши във
файл (кръсти го напр. file) и после пусни от терминал:

hexdump -C file

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