分类 PHP 下的文章

Cloudreve 屏蔽 ThinkPHP 核心文件,防止被人恶意攻击

根据 ThinkPHP 的默认配置,index.php 入口文件本应在 public/index.php 的,但是 Cloudreve 直接将它移动到程序根目录,ThinkPHP 框架 的所有文件都暴露在公网下,如果 ThinkPHP 出现什么漏洞,攻击者可以直接对其进行攻击

为了避免这种,我想到了两种方法

一种是使用 Nginx URL重写(伪静态)进行屏蔽:

这里屏蔽掉了 ThinkPHP 核心文件及一些安装文件,保证其不会暴露在公网中
location ~ ^/(extend|application|thinkphp|CloudreveInstaller|vendor|extend)/*.*$
{
        return 404;
}

location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md|composer.lock|mysql.sql|deploy.sh|composer.json)
{
        return 404;
}

另一种是将 index.php 移动到 public 下

这个移动之后有许多地方需要更改,我嫌麻烦,没去弄

记一次 ThinkPHP6 环境变量定义文件配置

默认安装后的根目录有一个 .example.env 环境变量示例文件,你可以直接改成 .env 文件后进行修改。

我理解有误,我以为只要是 .env 后缀的文件系统就可以自动载入,结果就是将 .example.env 改成 .env 文件名,然后将它放到网站的根目录,与 think 文件同级,如图:
Snipaste_2020-01-24_08-04-28.png

然后可以通过 env 助手函数测试下 env('database.type') 看是否正常输出

ThinkPHP 5 命令行下执行控制器下的方法

假设有这样一个 URL:https://nowtime.cc/v1/time_table/write_table

你想要再 命令行 下执行,你可以这样运行

1.转到 public 目录下

cd /www/wwwroot/nowtime.cc/public

2.执行控制器下的某一个方法

php index.php v1/time_table/write_table
对于 THinkPHP 5 以上版本都可以是用此方法

阿里云PHP Composer全量镜像正式上线!(附镜下载地址及配置方法)

今天,阿里云正式上线PHP Composer全量镜像,所有PHP开发者都可以通过我们的开发者社区developer.aliyun.com/composer加速Composer安装器。

这款镜像工具的最大优势是快,几乎实现与PHP Packagist官方实时同步,每隔30秒刷新全国CDN缓存。它基于阿里云的对象存储OSS和CDN研发同步系统,通过任务分发,实现同步的快速和稳定。

为什么要开发这款镜像工具?

这其实来自客户和阿里巴巴集团业务的共同诉求。

阿里云上有数万 PHP SDK 用户,提高安装成功率必然要求有最快的镜像同步工具。

此外,有近6万企业的开发者活跃在我们的一站式企业协同研发云——云效平台上,通过云效平台构建 PHP工程,这同样离不开镜像同步工具。

为什么要开放这款工具的下载?

因为我们也是PHP社区的受益者,希望以此回馈。也希望在广泛PHPer的监督下,打磨更好的工具。

过去一周,我们进行了小范围的开发者公测。

非常高兴的是,在没有任何官方推广的情况下,这款工具单日下载量就超过30万次,不少开发者甚至自发宣传推广。在惊喜、感恩的同时,我们也发现了不少问题,不断进行完善和调整。

今天,我们终于可以正式宣布阿里云Composer全量镜像上线,并自信我们有能力服务更广大的PHPer。

我们也在此向Laravel China开发者Summer、禅师致敬:

毫无疑问,我们也是Laravel China的受益者,感谢你们对PHP社区的付出,也非常感谢Summer对我们的认可,阿里云会继续努力,一起让PHP社区变得更好!

- 阅读剩余部分 -

C 语言 | 求 3x3 矩阵对角线之和

C 代码如下:

#include <stdio.h>
//求3x3的整型矩阵对角线之和

int main(){
    int i,sum1=0,sum2=0;
    int arr[3][3]={{1,9,5}, {2,6,8}, {4,5,7}};

    //第一个对角线(左上 至 右下):0,0  1,1     2,2
    //第二个对角线(右上 至 左下):0,2  1,1  2,0
    //相加的和为:1+6+7 + 5+6+4  = 29

    for(i=0; i<3; i++){
        sum1 += arr[i][i];//<左上 至 右下> 之和
        sum2 += arr[i][-(i-3)];//<右上 至 左下> 之和。3 指的是数组“列”长度
    }

    printf("两个对角线之和为:%d", sum1+sum2);

    return 0;
}

运行结果:

两个对角线之和为:29
--------------------------------
Process exited after 0.1137 seconds with return value 0
请按任意键继续. . .