Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] sfImageTransformExtraPlugin nie zapisuje obrazków, lokalnie działa, na produkcji nie
evertras
post 5.04.2011, 20:46:20
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 2.03.2011

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


Witam.

W swoim projekcie używam sfImageTransformExtra plugin. Problem polega na tym, że lokalnie wszystko działa natomiast na serwerze produkcyjnym juz nie. Moje ustawienia:

app.yml
Kod
sfImageTransformPlugin:
    mime_type:
      auto_detect:  true
      library:    gd_mime_type #  gd_mime_type (GD), Fileinfo (PECL), MIME_Type (PEAR)
    font_dir:     %SF_PLUGINS_DIR%/sfImageTransformExtraPlugin/data/example-resources/fonts


routing.yml
Kod
sf_image:
  class: sfImageTransformRoute
  url:   /uploads/avatars/thumbnails/:format/:filepath.:sf_format
  param: { module: sfImageTransformator, action: index }
  requirements:
    format:    '[\w_-]+'
    filepath:  '[\w/.]+'
    sf_format: 'gif|png|jpg'
    sf_method: [ get ]
  options:
    image_source: File
    image_location: %SF_ROOT_DIR%


Wywoływanie obrazka:
Kod
echo image_tag(url_for('sf_image', array(
                'format'    => 'square100',
                'filepath'  => 'avatars/default')), array('class' => 'imgBorder'));


Struktura projektu na serwerze:
Kod
--home
----user
------public_html
--------projekt_symfony
--------< tutaj wszystko to co znajduje się w projekcie: lib, apps itp. >
--------web
----------uploads
------------avatars (stad pobieram plik graficzny np: default.jpg)
--------------thumbnails (to jest folder w którym plugin ma cachować przekonwertowane grafiki)


Na stronie otrzymuje taki url do img'a:
Kod
src="/projekt/web/uploads/avatars/thumbnails/square100/avatars/default.jpg"


Ale problem polega na tym, że on tego obrazka nie widzi i nie cache'uje sobie transformacji. Gdy próbuję dostać się do obrazka poprzez url: http://strona/projekt/web/uploads/avatars/default.jpg to go widzi bez problemu. W settings.yml ustawiłem cache:true. Odpaliłem za pomocą cron'a: symfony cc, symfony project:publish-assets, symfony transforms:check-caching frontend. Z tego ostatniego otrzymałem pozytywną odpowiedź, że wszystko jest ustawione jak należy i ewentualny problem jest w uprawnieniach. Siedzę nad tym już 5 godzin i ni cholery nie wiem co jeszcze mogę mieć źle skoro na localu wszystko działa... Help !
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
jaro87
post 6.04.2011, 07:42:12
Post #2





Grupa: Zarejestrowani
Postów: 53
Pomógł: 7
Dołączył: 10.03.2011
Skąd: Wrocław

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


Cytat(evertras @ 5.04.2011, 21:46:20 ) *
Z tego ostatniego otrzymałem pozytywną odpowiedź, że wszystko jest ustawione jak należy i ewentualny problem jest w uprawnieniach.

Skoro problem jest w uprawnieniach, to może trzeba je zmienić?smile.gif Ustaw tymczasowo prawa do zapisu i odczytu dla wszystkich i zobacz czy coś się zmieniło.

A gdy użyjesz ścieżki bezwzględnej w url_for, obrazek się wyświetla?
  1. echo image_tag(url_for(..., ..., true));


Go to the top of the page
+Quote Post
evertras
post 6.04.2011, 15:01:01
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 2.03.2011

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


Uprawnienia mam 777 na cały folder web/ i nic to nie pomogło. Tak samo ze ścieżką bezwględną. Może nie widzi w parametrze 'filepath' => '...' tego pliku. Już sam nie wiem...

EDIT: Dodałem do filepath ścieżkę bezwzględną przez którą znajduje obrazek w url'u, ale nic to nie pomogło.

Czy może być to spowodowane tym, że na serwerze mam php 5.2 a lokalnie 5.3 ?

Ten post edytował evertras 6.04.2011, 10:05:42
Go to the top of the page
+Quote Post
destroyerr
post 6.04.2011, 16:00:28
Post #4





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Wersja php nie ma znaczenia. Czy lokalnie też masz taki układ, że domena nie wskazuje bezpośrednio na katalog web (tzn. czy lokalnie ustawiłeś VirtualHost)?
Go to the top of the page
+Quote Post
evertras
post 6.04.2011, 17:52:49
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 2.03.2011

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


Lokalnie mam virtual host'a i domena wskazuje bezpośrednio do web/.

Edit: Utworzyłem nowy czysty projekt z samym pluginem i postawiłem virtual hosta symulującego ten na serwerze (domena/projekt/web/) i też mi nie wyświetla obrazków lokalnie. Problem musi polegać przy zapisie bo potem odwołuje się do zapisanego obrazka z folderu thumbnails ale jego tam nie ma.
Go to the top of the page
+Quote Post
jaro87
post 6.04.2011, 21:36:19
Post #6





Grupa: Zarejestrowani
Postów: 53
Pomógł: 7
Dołączył: 10.03.2011
Skąd: Wrocław

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


Stwórz sobie taką klasę
  1. class sfImageSourceMyFile extends sfImageSourceFile
  2. {
  3. public static function buildURIfromParameters(array $parameters)
  4. {
  5. // all params must be given
  6. if (!array_key_exists('filepath', $parameters))
  7. {
  8. throw new InvalidArgumentException('The sf_image for image_source "File" route has some missing mandatory parameters (filepath).');
  9. }
  10. return sprintf('%s', $parameters['filepath']);
  11. }
  12. }


i w routingu
options:
image_source: File

zmień File na MyFile.

U mnie dopiero z tym zadziałało.
Go to the top of the page
+Quote Post
janek9
post 18.07.2011, 11:19:01
Post #7





Grupa: Zarejestrowani
Postów: 121
Pomógł: 2
Dołączył: 22.03.2009

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


Pozwolę sobie odświeżyć temat.

Mam podobny problem, wszystko działa w dev, natomiast w prod już pokazuje się error 500, ze nie moze znalezc obrazka.

Ten post edytował janek9 18.07.2011, 16:34:30
Go to the top of the page
+Quote Post
toffiak
post 18.07.2011, 18:23:49
Post #8





Grupa: Zarejestrowani
Postów: 395
Pomógł: 80
Dołączył: 24.08.2009

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


Najczęściej w takim przypadku pomaga czyszczeniu cache, ale jeśli nie pomogło warto sprawdzić co zanotowane jest w logach apacha.


--------------------
Go to the top of the page
+Quote Post
janek9
post 18.07.2011, 18:27:36
Post #9





Grupa: Zarejestrowani
Postów: 121
Pomógł: 2
Dołączył: 22.03.2009

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


Cytat(toffiak @ 18.07.2011, 19:23:49 ) *
Najczęściej w takim przypadku pomaga czyszczeniu cache, ale jeśli nie pomogło warto sprawdzić co zanotowane jest w logach apacha.


clear cache jest co chwile robiony, natomiast logi apache pokazuja: sfImageTransformator is not enabled - ale on jest włączony w settings, i w tasku od tego pluginu nie wykrywa żadnych błedow. Szczerze mowiac nie mam pojecia co to moze byc za problem..
Go to the top of the page
+Quote Post
jaro87
post 19.07.2011, 13:19:36
Post #10





Grupa: Zarejestrowani
Postów: 53
Pomógł: 7
Dołączył: 10.03.2011
Skąd: Wrocław

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


Skoro Apache mówi, że nie aktywowałeś tego modułu, to znaczy, że tego nie zrobiłeśsmile.gif

Przczytaj
http://www.symfony-project.org/book/1_2/05...e_killed_my_app
http://www.symfony-project.org/book/1_2/05...uration_cascade

i jeszcze raz dokładnie przeanalizuj swój settings.yml
Go to the top of the page
+Quote Post
janek9
post 19.07.2011, 14:42:33
Post #11





Grupa: Zarejestrowani
Postów: 121
Pomógł: 2
Dołączył: 22.03.2009

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


@jaro87: Dzięki za wskazówki, problem leżał po stronie odblokowania modułu w moim przypadku w obu aplikacjach ponieważ przekierowuję po .htaccess do odpowiedniej aplikacji smile.gif

Po prawie 10h spędzonych nad tą wtyczką, rozwiązałem problem:

1. W templatce, przy definiowaniu wartości klucza filepath, należy nie podawać żadnych dodatkowych ścieżek - tylko nazwę pliku bądź obiekt
2. Plik routing.yml wtyczki zostawiamy tak jak jest "fabrycznie"
3. W pliku app.yml wtyczki sfImageTransformPlugin, ustawiamy z false na true pozycję: mime_detect (mime_detection)
4. W konsoli dajemy: symfony project:permissions i cache:clear, a następnie: symfony transforms:check-caching backend --env=[prod]
5. Sprawdzamy ustawienia chmodów, ewentualnie zmiana grupy z root na users w przypadku linuxa
6. Jeżeli nadal nic to nie da, należy odinstalować wtyczkę za pomocą komendy: symfony plugin:uninstall symfony/sfImageTransformExtraPlugin i ponownie ją zainstalować, w konsoli: publish-assets i cache:clear

W razie problemów, śmiało pisać na PW lub w tym wątku.

Matt
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:38