Не могу заставить Symfony переходить по символическим ссылкам на мои ресурсы - PullRequest
0 голосов
/ 22 августа 2011

у меня есть ресурсы, которыми поделились с другим проектом. Изображения продуктов, которые я покажу, хранятся в папке из моего нового проекта, для которого я использую Symfony ...

В моем проекте symfony в папке /web/images я создал символическую ссылку на папку, в которой хранятся мои изображения. Я уверен, что права доступа для каждого файла и папки в папке рисунков, указанной символической ссылкой, установлены 777, каждый может получить к ним доступ.

Все работало нормально, пока я не включил переписывание модов Apache. Картинки в папке /web/images были показаны отлично, купить что-либо доступное по символической ссылке не было показано. Я сразу подумал, что символическая ссылка была причиной этого поведения, и я проверил свою конфигурацию apache для сайта. Также, читая Symfony, я проверил файл .htaccess в папке /web и добавил строку:

Options FollowSymLinks

Это тоже не сработало.

Вот моя конфигурация сайта:

#<VirtualHost mydomain.com>
<VirtualHost *:80>
    #ServerAdmin webmaster@localhost
    ServerAdmin admin@mydomain.com
    ServerName mydomain.com
    ServerAlias www.mydomain.com

    #DocumentRoot /var/www
    DocumentRoot /srv/www/mydomain.com/public_html/
    <Directory />
        Options FollowSymLinks
        #AllowOverride None
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
    #<Directory /var/www/>
    <Directory /srv/www/mydomain.com/public_html/>
        Options Indexes FollowSymLinks MultiViews
        #AllowOverride None
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        #AllowOverride None
        AllowOverride All
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        #Options +ExecCGI -MultiViews +FollowSymLinks
        Order allow,deny
        Allow from all
    </Directory>

    #ErrorLog ${APACHE_LOG_DIR}/error.log
    ErrorLog /srv/www/mydomain.com/logs/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    #CustomLog ${APACHE_LOG_DIR}/access.log combined
    CustomLog /srv/www/mydomain.com/logs/access.log combined

    Alias /sf /home/victor/projects/vitoquen/tienda/lib/vendor/symfony/data/web/sf
    <Directory "/home/victor/projects/vitoquen/tienda/lib/vendor/symfony/data/web/sf">
        Options FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from All
    </Directory>

    #Alias /doc/ "/usr/share/doc/"
    #<Directory "/usr/share/doc/">
    #    Options Indexes MultiViews FollowSymLinks
    #    #AllowOverride None
    #    AllowOverride All
    #    Order deny,allow
    #    Deny from all
    #    Allow from 127.0.0.0/255.0.0.0 ::1/128
    #</Directory>

</VirtualHost>

А вот и мой .htaccess:

Options +FollowSymLinks +ExecCGI

<IfModule mod_rewrite.c>
  RewriteEngine On

  Options FollowSymLinks

  # uncomment the following line, if you are having trouble
  # getting no_script_name to work
  #RewriteBase /

  # we skip all files with .something
  #RewriteCond %{REQUEST_URI} \..+$
  #RewriteCond %{REQUEST_URI} !\.html$
  #RewriteRule .* - [L]

  # we check if the .html version is here (caching)
  RewriteRule ^$ index.html [QSA]
  RewriteRule ^([^.]+)$ $1.html [QSA]
  RewriteCond %{REQUEST_FILENAME} !-f

  # no, so we redirect to our front web controller
  RewriteRule ^(.*)$ index.php [QSA,L]

</IfModule>

Есть предложения? спасибо, что нашли время, чтобы прочитать и ответить !!!

EDIT:

Я попробовал Znarkus ' решение, и не сработало! это, я думаю, может означать, что символическая ссылка не была проблемой.

Файлы в папке с изображениями сохраняются без расширения. Из-за этого я не могу использовать image_tag() помощник Symfony, который добавляет .png по умолчанию к имени файла, если не указано расширение ... Это способ отображения изображений в моем шаблоне:

if (strcmp($producto->foto, "SI") == 0) {
    echo '<img src="/images/productos/'.$producto->id.'_muestra" width="102" height="84"  alt="Imagen de muestra"/>';
} else {
    echo '<img src="/images/no_picture.jpg" width="102" height="84" alt="Imagen de muestra"/>';
}

Странно то, что /images/no_picture.jpg отображается отлично. Еще раз спасибо за любую помощь, вы можете дать мне !!!

1 Ответ

1 голос
/ 22 августа 2011

Symfony, вероятно, не поддерживает символические ссылки.Попробуйте вместо этого сделать mount --bind, что должно быть прозрачно для приложения.


Ваш обновленный вопрос: у вас должно быть расширение для тега <img />.*

...