还有很多关于x-sendfile没有返回文件的问题,但似乎没有一个能够解决我的问题。
我从站点公共根目录之外的目录中提供图像,并希望能够以尽可能少的开销将这些图像传递给用户,因此我希望避免使用readfile()处理它们。因此,我尝试使用x-sendfile。
我的开发环境包括在64位windows上安装XAMPP (apache和php)。我使用的是mod_xsendfile.so的64位windows二进制文件,它似乎是根据phpinfo()正确加载的。
我认为这可能是大小写敏感或反斜杠/正斜杠的问题,但情况似乎并非如此。
如果我从错误日志中复制路径并将其粘贴到资源管理器窗口中,则该文件确实存在。我还使用了file_exists和文件大小来验证php中的路径。
httpd.conf设置:
LoadModule xsendfile_module modules/mod_xsendfile.so
XSendFile On
XSendFilePath "c:/images-store/"PHP代码
header('Content-Type: image/jpeg');
header('X-Sendfile: c:/image-store/5cca6ef24ae46c4346c24846ee3e5521213562ef-thumb.jpg');错误日志条目
[pid 3208:tid 1900] (20023)The given path was above the root path: [client 127.0.0.1:57477] xsendfile: unable to find file: c:/image-store/5cca6ef24ae46c4346c24846ee3e5521213562ef-thumb.jpg任何关于如何让这些文件被提供服务的见解都将是很棒的。
发布于 2016-08-19 08:27:47
结果是区分大小写。路径中的C必须是大写的C。
XSendFilePath C:/images-store/我可能应该切换回linux来进行我的开发……
https://stackoverflow.com/questions/39029201
复制相似问题