thinkphp如何设置runtime文件的存储路径!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp如何设置runtime文件的存储路径!相关的知识,希望对你有一定的参考价值。

我上传腾讯的云服务,会产生缓存文件,腾讯给了一个可写目录

我要如何设置产生缓存的runtime文件指向这个目录呢?

Thinkphp的编译缓存文件runtime.php:
1.定义单入口文件(index.php)
在单入口index.php中不定义这两项时,会生成编译缓存文件~runtime.php
define('RUNTIME_PATH','./App/Temp/'); //定义编译目录
define('APP_DEBUG',TRUE); //开启调试模式

上述两行不能在index.php中作用,则index.php变为
<?php
define('APP_NAME','App'); //项目名称
define('APP_PATH','./App/'); //项目路径
include './ThinkPHP/ThinkPHP.php'; //引入ThinkPHP核心运行文件
?>

2.生成编译缓存文件(~runtime.php)
3.复制~runtime.php中的全部内容到index.php中,运行效果会和之前一样。
~runtime.php中缓存的编译内容,相当于把index.php引导的所有操作全部集成到~runtime.php文件中。
有了这个缓存的编译文件,index.php在下次运行时,不再引导,而是直接检测是否存在~runtime.php编译缓存文件,如果在,则直接运行~runtime.php。
参考技术A

修改 Tinkphp.php中的

defined('RUNTIME_PATH') or define('RUNTIME_PATH',   '/Runtime/');   // 系统运行时目录

此宏为tp的runtime目录

追问

是这样改吗defined('RUNTIME_PATH') or define('RUNTIME_PATH', '/data/cloud/'); // 系统运行时目录

追答

这个你得测试一下,看看行不行。
如果不行的话就用相对路径。

本回答被提问者采纳

解决ThinkPHP runtime目录访问权限的问题

问题

使用Thinkphp 发布项目的时候,框架会默认在runtime目录下记录日志,但是把项目发布时,由于系统是Linux系统,所以对于文件的权限要求比较严格。所以项目运行时,无法向runtime下记录日志,导致运行失败。

解决方法STEP 1

既然,没有写入权限,我们直接授权就可以解决问题。授权的方案有两种

1、直接给文件夹授权
chmod -R 777 runtime  

这种方法的弊端在于此文件夹下所有的文件的权限全部被放开,很不安全

所以我想到了改变文件夹所属用户组的方案

2、更改文件夹按所属用户

因为我使用的是Apache,所以需要知道httpd对应的用户的用户名

ps aux|grep http

 

 

 有图可知用户是apache,将runtime对应的用户改成apache

chown -R apache runtime

 

解决方法 STEP2

step 1 中所说的方法虽然都解决了文件写入的问题,但是带来一个新的问题,就是日志文件可以通过浏览器地址访问到,这样是及其不安全的

 

为了解决这问题,我们可以通过使用Apache的 .htaccess文件来控制runtime下文件的访问权限。

我们再runtime目录下新建 .htaccess文件,文件内容为

Order Allow,Deny
Deny from all

即可禁止对该文件夹下的访问权限

 

 

 

大功告成!

 

以上是关于thinkphp如何设置runtime文件的存储路径!的主要内容,如果未能解决你的问题,请参考以下文章

ThinkPHP清除缓存Runtime文件

thinkphp5 runtime\log怎么读取,是用来存储啥的

Thinkphp5笔记五:配置data文件夹

解决ThinkPHP runtime目录访问权限的问题

Thinkphp3.2多站点共用S方法缓存

ThinkPHP5 清除runtime缓存文件