Я ищу способ проверить, правильно ли X-Sendfile обрабатывает запросы, возвращаемые веб-серверу скриптом (PHP).Изображения обслуживаются правильно, но я думал, что увижу заголовок в запросах curl.
$ curl -I http://blog2.stageserver.net/wp-includes/ms-files.php?file=/2011/05/amos-lee-feature.jpg
HTTP/1.1 200 OK
Date: Wed, 04 Jan 2012 17:19:45 GMT
Server: Cherokee/1.2.100 (Arch Linux)
ETag: "4dd2e306=9da0"
Last-Modified: Tue, 17 May 2011 21:05:10 GMT
Content-Type: image/jpeg
Content-Length: 40352
X-Powered-By: PHP/5.3.8
Content-Disposition: inline; filename="amos-lee-feature.jpg"
Конфигурация
Чероки 1.2.100 с PHP-FPM 5.3.8в FastCGI:
cherokee.conf: vserver!20!rule!500!handler!xsendfile = 1
(устанавливается vServer> Поведение> Расширения php> Обработчик: разрешить X-Sendfile [проверка включена])
Wordpress Network / WPMU 3.3.1 :
define('WPMU_SENDFILE',true);
устанавливается в wp-config.php
следующим образом перед включением wp-settings.php
.Это приведет к выполнению следующего кода в WP wp-includes / ms-files.php: 50 обслуживает файлы для определенного блога:
header( 'X-Sendfile: ' . $file );
exit;
Я подтвердил, чтоприведенный выше фрагмент кода выполняется путем добавления дополнительного заголовка для размещения прямо перед вызовом exit();
.Это Content-Disposition присутствует с результатами curl выше, а не изначально в коде ms-files.php.Код, который был добавлен:
header('Content-Disposition: inline; filename="'.basename($file).'"');
Исследования
У меня есть:
- Перезагрузка демонов php-fpm / чероки после созданияизменения конфигурации.
- Попробовал несколько трюков в комментариях на php.net / readfile и заменил простой заголовок в
ms-files.php
на более полный код из примеров. - php.net / manual / en / function.readfile.php
- www.jasny.net / статьи / how-i-php-x-sendfile /
- * codeutopia.net / blog / 2009/03/06 / файлы-отправления-лучше-apache-mod_xsendfile-and-php / *
- Подтверждено [поддержка чероки] [5] и проверено [с и без] [6] сжатие, хотя я не думаю, что оно будет применяться, поскольку мои изображения работают правильно.Я также обнаружил подозрительно похожую проблему в посте lighttpd.
- * cherokee-project.com / doc / other_goodies.html *
- code.google.com / p / cherokee / выдает / подробно? Id = 1228
- webdevrefinery.com / forums / topic / 4761-x-sendfile /
- Находится здесь реклама SO, которая может указывать на удаление заголовка
- stackoverflow.com / questions / 7296642 / django-понимание-x-sendfile
- Проверено, что приведенные выше заголовки согласуются с curl, wget,Firefox, Chrome и web-sniffer.net.
- Обнаружено, что я не могу опубликовать более 2 ссылок из-за отсутствия репутации.
Вопросы
- Будет ли
X-Sendfile
присутствовать в заголовках при правильной работе или удалении? - Можно ли использовать журналы доступа, чтобы определить, работает ли
X-Sendfile
?
Я ищу общие советы по устранению неполадок или информацию здесь, не обязательно специфичную для PHP / Cherokee.
Обновление
Я нашел костюмОдин из способов подтверждения X-Sendfile или X-Accel-Redirect в тестовой среде или среде с песочницей: Отключите X-Sendfile и проверьте заголовки.
Если Allow X-Sendfile отключен в Cherokee:
$ curl -I http://blog2.stageserver.net/wp-includes/ms-files.php?file=/2011/05/amos-lee-feature.jpg
HTTP/1.1 200 OK
Date: Fri, 06 Jan 2012 15:34:49 GMT
Server: Cherokee/1.2.101 (Ubuntu)
X-Powered-By: PHP/5.3.6-13ubuntu3.3
Content-Type: image/jpeg
X-Sendfile: /srv/http/wordpress/wp-content/blogs.dir/2/files/2011/05/amos-lee-feature.jpg
Content-Length: 40352
Изображение не загружается в браузерах, но вы можете видеть, что заголовок присутствует.После повторного включения Allow X-Sendfile изображение загружается, и вы можете быть уверены, что X-Sendfile работает.