用阿里云函数计算部署thinkphp5.1
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用阿里云函数计算部署thinkphp5.1,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2709字,纯文字阅读大概需要4分钟。
内容图文
![用阿里云函数计算部署thinkphp5.1](/upload/InfoBanner/zyjiaocheng/850/ca7fd0a0dfb84addb8e08d1ba3cb1e63.jpg)
thinkphp国内还是用的很多的哈,我自己就用哈。所以研究了一下用函数计算部署tp5。
步骤:
1.后台创建php7.2环境的函数,创建http触发器,这些就不详细写了,可以去看文档。
2.打开tp5的入口文件(/public/index.php)在namespace think;
这句的下面,加如下代码:
if(!$_SERVER['PATH_INFO']) $_SERVER['PATH_INFO'] = preg_replace("/^(\?s\=\/)/","",$_SERVER['REQUEST_URI']);
3.准备tp5源码,在根目录创建index.php文件(作为函数的入口文件),代码如下:
(第一次在阿里云博客上写文章哈,有点手生)
<?php
#自定义的域名,绑定了自定义域名的,可以换成自己自定义的。
$MY_HOST = "31199382.cn-beijing.fc.aliyuncs.com";
#web目录,默认是tp5的public目录,绝对路径,如:/code/public
$WWW_DIR = '/code/public';
function handler($request, $context){
#如果不使用函数计算后台提供的那个厂厂的域名,这句可以注释掉。
if(strpos($request->getAttribute("requestURI"),"/2016-08-15/proxy") !== false) $request = clearFcHost($request,$context);#兼容 fc后台的url地址
$uri = $request->getAttribute("requestURI");
$file = explode("?", $uri)[0];
if($file=='/') $uri='/';#
$file = $GLOBALS['WWW_DIR'].$file;
if(file_exists($file) and $uri!='/'){
if(strpos($uri,".php")) return php_run(basename($file), $request, $context);#php_run
return static_run($uri);#static_run
}
$request = $request->withAttribute("requestURI", "?s=".$uri);
return php_run('index.php', $request, $context);# php_run
}
function php_run($name,$request, $context)
{
return $GLOBALS['fcPhpCgiProxy']->requestPhpCgi($request, $GLOBALS['WWW_DIR'], $name,['SERVER_NAME' => $GLOBALS['MY_HOST'], 'SERVER_PORT' => '80', 'HTTP_HOST' => $GLOBALS['MY_HOST']],['debug_show_cgi_params' => false, 'readWriteTimeout' => 15000]);
}
use RingCentral\Psr7\Response;
function static_run($uri): Response{
$file_dir = $GLOBALS['WWW_DIR'].$uri; #完整文件路径
$file_dir = explode("?", $file_dir)[0]; #去掉动态路径
if(is_dir($file_dir)) $file_dir .= '/index.html';# 可以这里定义目录的默认索引页
$handle = fopen($file_dir, "r");
$contents = fread($handle, filesize($file_dir));
fclose($handle);
return new Response(200, ['Content-Type' => $GLOBALS['fcPhpCgiProxy']->getMimeType($file_dir),'Cache-Control' => "max-age=8640000",'Accept-Ranges' => 'bytes'], $contents);
}
function clearFcHost($request,$context){
$uri = $request->getAttribute("requestURI");
$uri = str_replace("/2016-08-15/proxy/".$context['service']['name']."/".$context['function']['name'],"",$uri);
$request = $request->withAttribute("requestURI", $uri);
return $request;
}
#错误处理
function error($code) {
#if($resp->getStatusCode() !=200) return error($resp->getStatusCode());
return '这里还木有写哈~~';
}
4.由于函数计算只有/tmp 目录可写,所以要改一下tp5的配置文件
编辑/config/log.php
'path' => '/tmp/log',
编辑/config/cache.php
'path' => '/tmp/cache',
好了,至此就部署好了。
内容总结
以上是互联网集市为您收集整理的用阿里云函数计算部署thinkphp5.1全部内容,希望文章能够帮你解决用阿里云函数计算部署thinkphp5.1所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。