Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] exif_imagetype w PHP7
Kshyhoo
post 1.05.2018, 13:46:38
Post #1





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Zmieniłem niedawno wersję PHP na 7 i nie działa mi funkcja exif_imagetype (mam wersje 5 i 7).
Cytat
Fatal error: Call to undefined function exif_imagetype()

Mam włączone poniższe rozszerzenia w podanej kolejności w php.ini:
Cytat
extension=php_mbstring.dll
extension=php_exif.dll

To pokazuje mi, że jest nieaktywna:
  1. function_exists('exif_imagetype');

Co w efekcie pokazuje mi:
Cytat
Fatal error: Call to undefined function exif_imagetype()

Co może być przyczyną, jakieś pomysły?


--------------------
Go to the top of the page
+Quote Post
Neutral
post 1.05.2018, 14:35:13
Post #2





Grupa: Zarejestrowani
Postów: 286
Pomógł: 46
Dołączył: 10.01.2016

Ostrzeżenie: (0%)
-----


Sprawdź w katalogu, czy masz zainstalowaną tę bibliotekę z rozszerzeniem najprawdopodobniej ".dll". Jeśli nie masz to doinstaluj. Sprawdź też path, jeśli jesteś pod Windows. Możliwe, że podczas instalacji coś się nie powiodło, sprawdź w logach. Jeśli nie chcesz się w to "bawić", to możesz zainstalować gotowy pakiet, np. XAMPP. Lepiej jednak by było zainstalować to ręcznie od nowa. Mogło zdarzyć się też tak, że DLL'ka z PHP 5 nadpisuje DLL'kę z PHP 7, czy coś takiego. Chyba coś ci koliduje na serverze.
Go to the top of the page
+Quote Post
Kshyhoo
post 1.05.2018, 15:20:31
Post #3





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Mam zainstalowany AppServ 8.6.0 i w obu folderach (5 i 7) są biblioteki tych rozszerzeń. Zanim napisałem posta, wszystko sprawdziłem i przeszukałem Google. Zrestartowałem serwer a potem i system i nadal nie widzi...


--------------------
Go to the top of the page
+Quote Post
trueblue
post 1.05.2018, 15:25:14
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A phpinfo() widać to rozszerzenie?


--------------------
Go to the top of the page
+Quote Post
Kshyhoo
post 1.05.2018, 15:32:58
Post #5





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Tak, obydwa.

  1. if (function_exists('exif_imagetype')) {
  2. echo "Tak";
  3. } else {
  4. echo "Nie";
  5. }

Pokazuje nie...


--------------------
Go to the top of the page
+Quote Post
Neutral
post 2.05.2018, 00:29:08
Post #6





Grupa: Zarejestrowani
Postów: 286
Pomógł: 46
Dołączył: 10.01.2016

Ostrzeżenie: (0%)
-----


Dodaj może zmienne środowiskowe do tego PHP 7 i jeszcze możesz wyrzucić chwilowo zmienną środowiskową PHP 5. Teraz właśnie zauważyłem, że to już pisałem w poście wyżej z tym path, chodziło mi właśnie o te zmienne środowiskowe, może pod Linuxem jest coś podobnego. Wejdź w:

Panel sterowania\System i zabezpieczenia\System -> Zaawanansowane ustawienia systemu (Właściwości systemu) -> Zaawansowane -> Zmienne środowiskowe -> Path

i dodaj ścieżkę do tego katalogu z PHP 7.

Co do sprawdzania, czy masz zainstalowane te rozszerzenie to wystarczy wykonać to:

  1. var_dump(function_exists('exif_imagetype')); // => bool(false)/bool(true)


Jeśli zwróci false, to znaczy, że tego nie masz.

Ten post edytował Neutral 2.05.2018, 00:31:41
Go to the top of the page
+Quote Post
Kshyhoo
post 2.05.2018, 05:46:31
Post #7





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Mam bool(false), co wydaje się dziwne, bo nie działa zarówno pod PHP5 jak i pod PHP7. W katalogach biblioteki są, w php.ini odkomentowane, i phpinfo.php je widzi.
Co do Path:
Cytat
C:\AppServ\Apache2.2\bin
C:\AppServ\php5
C:\AppServ\MySQL\bin
C:\AppServ\Apache24\bin

Może problemem była podwójna ścieżka do Apacha, do jego starej wersji... Po restarcie sprawdzę.


--------------------
Go to the top of the page
+Quote Post
Neutral
post 2.05.2018, 10:35:03
Post #8





Grupa: Zarejestrowani
Postów: 286
Pomógł: 46
Dołączył: 10.01.2016

Ostrzeżenie: (0%)
-----


Kod
;extension=php_ldap.dll
extension=php_mbstring.dll
extension=php_exif.dll; Must be after mbstring as it depends on it
extension=php_mysqli.dll
;extension=php_oci8_12c.dll; Use with Oracle Database 12c Instant Client


U mnie pisze w komentarzu, że php_exif.dll korzysta z DLL'ki php_mbstring.dll, jeśli dobrze zrozumiałem, więc najprawdopodobniej ta DLL'ka powinna znaleźć się pod tamtą DLL'ką (w takiej kolejności jak ja mam).

http://php.net/manual/en/configuration.changes.php
https://superuser.com/questions/773173/how-...php-ini-windows

Kod
;(...)
engine=On
;(...)
short_open_tag=Off
;(...)
zlib.output_compression=Off
;(...)
implicit_flush=Off
;(...)
unserialize_callback_func=
;(...)
serialize_precision=17
;(...)
disable_functions=
;(...)
disable_classes=
;(...)
zend.enable_gc=On
;(...)
expose_php=On
;(...)
variables_order="GPCS"
;(...)
request_order="GP"
;(...)
register_argc_argv=Off
;(...)
auto_globals_jit=On
;(...)
include_path=C:\xampp\php\PEAR
;(...)
doc_root=
;(...)
user_dir=
;(...)
extension_dir="C:\xampp\php\ext"
;(...)
enable_dl=Off
;(...)
safe_mode_allowed_env_vars=PHP_
safe_mode_protected_env_vars=LD_LIBRARY_PATH
;(...)


Nie napisałeś, czy używasz Linux'a, czy Windows'a.
Kod
; UNIX: "/path1:/path2"
;(...)
; Windows: "\path1;\path2"


;(...) - Oznacza, że zamiast tego u mnie w pliku php.ini są komentarze albo jakieś instrukcje (konfiguracja).

Sprawdź, czy DLL'ka php_exif.dll znajduje się w odpowiednim katalogu, do którego linkujesz, to znaczy sprawdź tę ścieżkę, żeby konfigurator, czy coś takiego widział, że ma pobierać/brać instrukcję z tej DLL'ki. U mnie to jest w:

C:\xampp\php\ext

Zapodam screen'a.



Aha, sprawdź też, czy DLL'ka php_exif.dll nie jest pusta, u mnie waży 48KB.

http://php.net/manual/en/ini.core.php#ini.extension-dir
http://php.net/manual/en/function.getenv.php

Cytat z mojego php.ini:

Cytat
; If you only provide the name of the extension, PHP will look for it in its
; default extension directory.
;
; Windows Extensions
; Note that ODBC support is built in, so no dll is needed for it.
; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5+)
; extension folders as well as the separate PECL DLL download (PHP 5+).
; Be sure to appropriately set the extension_dir directive.


https://www.elektroda.pl/rtvforum/topic1982499.html

Może dodaj taką ścieżkę w tym Path:

C:\AppServ

A tamte chwilowo wyrzuć, skopiuj je z path i wklej np. do notatnika. Jeśli samo C:\AppServ pomogło, to już ich spowrotem nie wklejaj tam.


Ten post edytował Neutral 2.05.2018, 11:18:51
Go to the top of the page
+Quote Post
Kshyhoo
post 2.05.2018, 18:30:12
Post #9





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Mam Windows 10. Całą resztę opisałem w poprzednich postach. Sprawdziłem całą konfigurację i mam tak jak powinno być a nie działa. Spróbuję ponownie zainstalować serwer albo sprawdzę na innych kompach.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 15:34