it-swarm-eu.dev

Styly obrázků nebyly generovány s Drupal 7 v IIS 6

Vyvinul jsem web, který používá různé styly obrázků pro export obrázků do iPhone (propojený z exportního dokumentu XML). Na mém vlastním vývojovém serveru s Linuxem/Apache to fungovalo naprosto dobře.

Stránka je nyní hostována ve sdíleném hostitelském prostředí, které používá Windows/IIS6. (ano, divné; není to moje rozhodnutí, jak můžete předpokládat;).)

Problém nyní spočívá v tom, že adresy URL image_style pro nové obrázky (práce existujících obrázků) vedou na stránku 404 chyb, která je přímo obsluhována službou IIS. Čisté adresy URL však fungovaly v pořádku a Drupal zobrazuje „normální“ 404 stránek.

Adresa URL jako http://example.org/does_not_exist tedy ukazuje typickou chybu, která nebyla nalezena, a zobrazuje se s Drupal, ale http: // example.org/sites/default/files/styles/command_image/public/Chrysanthemum_0.jpg zobrazuje stránku IIS 404 stránka).

Web používá pro tyto obrázky veřejný systém souborů a cesta je správná; funguje to dobře pro existující obrázky, které jsem nahrál společně se zbytkem webu během počátečního nasazení na tento server.

Máš nějaký nápad?

3
Berdir

Dobře, přišel jsem na to.

Problém byl v tom, že existovaly dva soubory .htaccess. Jeden na nejvyšší úrovni, který obsahuje většinu konfigurace a druhý na webech/default/files, což souvisí s bezpečností (vyhněte se spouštění php souborů a podobně) a obsahuje pouze toto:

SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
Options None
Options +FollowSymLinks

Nyní se zdá, že rozdíl je v tom, že v Apache se zdá, že oba soubory jsou kombinovány (ten na stránkách/default/files zdědí vše od nejvyšší úrovně). K tomu nedochází u modulu ISAPI_Rewrite, který vypadá kompatibilní s aplikací Apache/IIS .htaccess.

Opravil jsem to zkopírováním obsahu nejvyšší úrovně přímo do souboru na webech/default/files, pod existující obsah. Navíc jsem musel změnit RewriteBase tak, aby zahrnoval soubor index.php do správného adresáře.

Záhlaví změněného souboru .htaccess nyní vypadá takto:

# From the original .htaccess file, do not remove.

SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
Options None
Options +FollowSymLinks

#
# Apache/PHP/Drupal settings:
# (copied from /.htaccess)
#

Content of the top level .htaccess file here comes here...

A část, kterou jsem změnil, nyní vypadá takto:

# Modify the RewriteBase if you are using Drupal in a subdirectory or in a
# VirtualDocumentRoot and the rewrite rules are not working properly.
# For example if your site is at http://example.com/drupal uncomment and
# modify the following line:
RewriteBase /YOURFOLDERHERE

Když je tedy v podadresáři nainstalováno Drupal), zadejte název složky. Pokud ne, můžete nechat tuto část komentovanou.

Našel jsem to díky (zbytečně dlouhému) blogovému příspěvku na http://www.caspianit.co.uk/imagecache-wrong-path/

Poznámka: Jednoduše smazáním souboru .htaccess na webech/default/files fungoval také , což však odstranilo nastavení SetHandler týkající se zabezpečení. Pochybuji však, že to má nějaký účinek v IIS ...

3
Berdir

Je /sites/default/files/styles/command_image/public/Chrysanthemum_0.jpg přítomen v systému souborů? Pokud ano, může dojít k potížím při načítání obrázku. Pokud tomu tak není, může se při generování a zápisu obrázku vyskytnout problém s povolením. Jsou na stránce protokolu Drupal) nějaké chyby?

1
Jorrit Schippers