阿里云函数计算php7.2无法加载字体文件等资源文件的解决办法

简介:

最近团队准备更多将服务放在serverless上,然后上周跟小伙伴一起体验了阿里云的函数计算(第一个项目基于TP5),初步感觉还不错,轻轻松松并发几百上千,免运维无烦劳杜绝半夜电话催人重启服务器(开玩笑的 - -)。

不过有一点小小的不舒服,登录后台后发现字体文件无法加载,woff ttf等全部报502,小伙伴电话跟阿里云沟通被告知不支持(我是有点懵逼的,0202年了字体为何不能支持),无果暂时不管这个。

又过了几天想起这事,专门研究了下,尝试了2个小时,总结出了2个结论

  • 加载.woff .ttf后缀的文件会异常
  • 加载字体数据会异常(没错,就算把字体后缀改为其他的也会异常)

配置过的应该都知道函数计算有一个index.php入口文件,里面包含php_run和static_run 2个处理方法,而上面的第一个问题,会导致根本无法加载handler,第二个问题会导致static_run读取文件fopen打开的时候出错。

虽然感觉这样的设定很奇怪,但是找到了办法就好办了,针对第一个问题,改名即可 于是我改成了

font.woff >> font.woff.svg

这样就能进入static_run里面了。
然后针对第二个问题,将字体文件进行编码或加密,我这里直接用的hex转码,用其他的编码应该也是可以的

$fontData = file_get_contents("font.woff.svg");
file_put_contents("font.woff.hexencode.svg", bin2hex($fontData));

然后index的static_run需要针对字体文件做一些特殊处理

    $contentType = $GLOBALS['fcPhpCgiProxy']->getMimeType($file_dir);
    if (stripos($uri, '.hexencode.') !== false) {
        // 如果包含hexencode就转码一下
        $contents = hex2bin($contents);
        if (stripos($uri, '.woff') !== false) {
            $contentType = 'application/font-woff';
        } else {
            $contentType = 'application/octet-stream';
        }
    }

最后一步,还需要修改其他文件中的引用地址为新地址 font.woff.hexencode.svg

再次部署,终于看到了绿色的可爱的200状态,字体也正常显示。

不过这始终只是一个临时解决方案,而且这样改了之后,本地开发调试也需要特殊处理下。所以还是希望阿里云尽快支持下字体加载,字体文件跟js css jpg等资源文件并没有本质的不同,不清楚为何要留这么大个坑在这里,大家如果有更好的方法,欢迎指教下。

原文链接 https://www.jianshu.com/p/d1ca14038bda

相关实践学习
【玩转ComfyUI】基于函数计算一键部署AI生图平台ComfyUI
本次实验将带大家通过使用阿里云产品函数计算FC,快速使用ComfyUI实现更高质量的图像生成。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
10月前
|
机器学习/深度学习 人工智能 Serverless
吉利汽车携手阿里云函数计算,打造新一代 AI 座舱推理引擎
当前吉利汽车研究院人工智能团队承担了吉利汽车座舱 AI 智能化的方案建设,在和阿里云的合作中,基于星睿智算中心 2.0 的 23.5EFLOPS 强大算力,构建 AI 混合云架构,面向百万级用户的实时推理计算引入阿里云函数计算的 Serverless GPU 算力集群,共同为智能座舱的交互和娱乐功能提供大模型推理业务服务,涵盖的场景如针对模糊指令的复杂意图解析、文生图、情感 TTS 等。
|
11月前
|
消息中间件 运维 监控
爆款游戏背后:尚娱如何借助阿里云 Kafka Serverless 轻松驾驭“潮汐流量”?
阿里云 Kafka 不仅为尚娱提供了高可靠、低延迟的消息通道,更通过 Serverless 弹性架构实现了资源利用率和成本效益的双重优化,助力尚娱在快速迭代的游戏市场中实现敏捷运营、稳定交付与可持续增长。
450 81
|
11月前
|
消息中间件 存储 运维
嘉银科技基于阿里云 Kafka Serverless 提升业务弹性能力,节省成本超过 20%
云消息队列 Kafka 版 Serverless 系列凭借其秒级弹性扩展、按需付费、轻运维的优势,助力嘉银科技业务系统实现灵活扩缩容,在业务效率和成本优化上持续取得突破,保证服务的敏捷性和稳定性,并节省超过 20% 的成本。
906 76
|
11月前
|
人工智能 机器人 Serverless
安诺机器人 X 阿里云函数计算 AI 咖啡印花解决方案
当云计算遇见具身智能,AI咖啡开启零售新体验。用户通过手机生成个性化图像,云端AI快速渲染,机器人精准复刻于咖啡奶泡之上,90秒内完成一杯可饮用的艺术品。该方案融合阿里云FunctionAI生图能力与安诺机器人高精度执行系统,实现AIGC创意到实体呈现的闭环,为线下零售提供低成本、高互动、易部署的智能化升级路径,已在商场、机场、展馆等场景落地应用。
安诺机器人 X 阿里云函数计算 AI 咖啡印花解决方案
|
人工智能 运维 安全
阿里云函数计算 AgentRun 全新发布,构筑智能体时代的基础设施
阿里云推出以函数计算为核心的AgentRun平台,通过创新体系解决开发、部署、运维难题,提供全面支持,已在多个真实业务场景验证,是AI原生时代重要基础设施。
|
11月前
|
人工智能 运维 安全
阿里云函数计算 AgentRun 全新发布,构筑智能体时代的基础设施
云原生应用平台 Serverless 计算负责人杨皓然在云栖大会发表主题演讲“Serverless Agent 基础设施:助力大规模 Agent 部署与运维”。本议题深入介绍了阿里云以函数计算为核心打造的 Agent 基础设施——AgentRun,阐述其如何通过创新的运行时、模型服务、网关及可观测体系,为企业构筑坚实、高效、安全的 Agent 时代基石。
|
DataWorks 数据挖掘 Serverless
阿里云EMR Serverless StarRocks 内容合集
阿里云 EMR StarRocks 提供存算分离架构,支持实时湖仓分析,适用于多种 OLAP 场景。结合 Paimon 与 Flink,助力企业高效处理海量数据,广泛应用于游戏、教育、生活服务等领域,显著提升数据分析效率与业务响应速度。
640 0
|
PHP
使用PHP辅助快速制作一套自己的手写字体实践
笔者以前在网上看到有民间高手制作字体的相关事迹,觉得把自己的手写字用键盘敲出来是一件很有意思的事情,所以一直有时间想制作一套自己的手写体,前几天在网上搜索了一下制作字体的方法,发现技术上并不是太难,结合了自己PHP方面的开发经验,很快的做出了一套自己的手写字体。
13064 0
|
11月前
|
关系型数据库 MySQL PHP
PHP和Mysql前后端交互效果实现
本文介绍了使用PHP连接MySQL数据库的基本函数及其实现案例。内容涵盖数据库连接、选择数据库、执行查询、获取结果等常用操作,并通过用户登录和修改密码的功能实例,展示了PHP与MySQL的交互过程及代码实现。
529 0
PHP和Mysql前后端交互效果实现
|
关系型数据库 MySQL Linux
查看Linux、Apache、MySQL、PHP版本的技巧
以上就是查看Linux、Apache、MySQL、PHP版本信息的方法。希望这些信息能帮助你更好地理解和使用你的LAMP技术栈。
691 17

热门文章

最新文章