分类
PHP 开发笔记

ThinkPHP 5.0 安装说明 Apache和Nginx伪静态

经常用ThinkPHP开发项目,总有朋友不知道怎么安装配置,记录一下不用每次都说明

1、如果没有安装包,可以查看官方文档下载及安装方法

官网下载

使用已有安装包下载,先解压安装包至网站根目录下

已有开发项目的先导入安装包中根目录的数据库文件至网站数据库中

2、修改数据库配置,网站根目录下.envapplication/database.php文件

hostname = 本地数据库不变,填:127.0.0.1
database = 数据库名
username = 用户名
password = 密码
hostport = 默认商品:3306

3、修改运行目录为public(宝塔可直接在 网站设置 – 网站目录选择 public 保存即可)

4、伪静态配置(宝塔可以直接在 网站设置 – 伪静态,下拉选择 thinkphp 保存即可)

附上手动设置伪静态规则内容:

Nginx

location / {
	if (!-e $request_filename){
		rewrite  ^(.*)$  /index.php?s=$1  last;   break;
	}
}

Apache

<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>

分类
前端 安卓 开发笔记

layui上传图片组件 安卓可以调用相机

layui上传图片upload组件 默认只能上传资源管理器的图片,不能选择相机拍照上传。

解决方法:

<script>
    var u = navigator.userAgent, app = navigator.appVersion;
    var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android终端或者uc浏览器
    if (isAndroid) {
        $(":file").attr('capture', 'camera');
    }
</script>

分类
PHP 前端 开发笔记

swagger-php使用笔记

资源文档地址:
https://github.com/swagger-api/swagger-ui
https://github.com/zircote/swagger-php
http://api.wuguangping.com/swagger-ui

轻松实现PHP项目的 Swagger Api 应用

1、安装swagger-php,全局配置命令

composer global require zircote/swagger-php


生成命令 ~/.composer/bin/openapi

export PATH="~/.composer/vendor/bin:$PATH"

2、进入php项目, 编写swagger注释代码

/**
 * @OA\OpenApi(
 *    @OA\Info(
 *      version="1.0.0",
 *      title="api文档",
 *      description="api文档"
 *    ),
 *    @OA\Server(
 *       description="测试环境",
 *       url="http://localhost",
 *   ),
 *    @OA\Server(
 *       description="正式环境",
 *       url="http://api.wuguangping.com",
 *   )
 * )
 *
 * @OA\Schema(
 *     schema="news",
 *     type="object",
 *     required={"title","content"},
 *     @OA\Property(
 *         property="id",
 *         type="integer",
 *         description="编号"
 *     ),
 *     @OA\Property(
 *         property="title",
 *         type="string",
 *         description="标题"
 *     ),
 *     @OA\Property(
 *         property="content",
 *         type="string",
 *         description="正文"
 *     ),
 *     @OA\Property(
 *         property="cover",
 *         type="string",
 *         description="配图地址"
 *     ),
 *     @OA\Property(
 *         property="time",
 *         type="string",
 *         description="发布时间"
 *     )
 * )
 *
 * @OA\Schema(
 *     schema="Paging",
 *     @OA\Property(
 *          property="page",
 *          type="integer",
 *          description="页码",
 *          format="int32",
 *          default="1"
 *     ),
 *     @OA\Property(
 *          property="limit",
 *          type="integer",
 *          description="每页个数",
 *          format="int32",
 *          minimum="0",
 *          exclusiveMinimum=true,
 *          maximum="100",
 *          exclusiveMaximum=false
 *     )
 * )
 */
class NewsController
{
 
    /**
     * @OA\Get(
     *     path="/news/{type}",
     *     summary="获取资讯",
     *     description="返回包含已发布的资讯列表",
     *     @OA\Parameter(
     *          name="type",
     *          in="path",
     *          required=true,
     *          description="类型",
     *          @OA\Schema(
     *             type="string",
     *             enum={"entertainment","Sports"}
     *         )
     *     ),
     *     @OA\Parameter(
     *          name="page",
     *          in="query",
     *          @OA\Schema(
     *             @OA\Items(ref="#/components/schemas/Paging")
     *         )
     *     ),
     *     @OA\Response(
     *         response=200,
     *         description="一个资讯列表",
     *         @OA\Schema(
     *             type="array",
     *             @OA\Items(ref="#/components/schemas/news")
     *         ),
     *     )
     * )
     */
    public function indexAction()
    {
        echo 'a';
    }
}

3、执行命令,编译注释代码,生成openapi.yaml文档,这里使用的ThinkPHP5环境,扫描api模块下的控制器接口,生成到public根目录:

./vendor/zircote/swagger-php/bin/openapi --format yaml ./application/api/controller/ -o ./public/

4、下载 swagger-ui前端

git clone https://github.com/swagger-api/swagger-ui.git

5、使用默认项目 dist 文件夹

打开index.html,找到SwaggerUIBundle的url参数值为openapi.yaml生成的路径:

const ui = SwaggerUIBundle({
        url: "/openapi.yaml",
      })

6、浏览器打开dist项目中index.html

分类
MySQL 开发笔记

phpMyAdmin配置文件现在需要一个短语密码的解决方法

在登陆phpMyAdmin后发现最下面有如下信息提示:配置文件现在需要一个短语密码。

1、首先,在 phpMyAdmin 文件中找到一个文件“config.inc.php”,这是phpMyAdmin配置文件的文件,如果没有此文件我们需要把“config.sample.inc.php”该文件复制,然后重命名为“config.inc.php”。

2、然后编辑打开 config.inc.php 搜索下面一行代码:
$cfg[‘blowfish_secret’] = ”;
将后面单引号里面填入一个32位长度的字符串即可!其实,’blowfish_secret’用一个任意字符串作为cookie的加密字符串,如果没有加密钥匙,就会出现提示“配置文件现在需要绝密的短语密码(blowfish_secret)”。

3、修改完后,刷新页面即可。(如果不行重启下Web和MySQL服务)

分类
MySQL 开发笔记

打开phpMyAdmin显示高级功能尚未完全设置部分功能未激活

总共三步可以搞定 

1、导入相关文件到数据库 

2、更改配置文件config.inc.php 

3、给于root用户相关权限 

详细过程如下:

1、我这里以 5.0.1 版本为例,先找到 phpMyAdmin 所在目录,在 phpMyAdmin 目录下有个 sql 文件夹,该文件夹里面有个 create_tables.sql 数据库文件。(如果你的 phpMyAdmin 是老版本,就不是 sql 文件夹,而是examples或script文件夹)

打开 phpMyAdmin,登陆进数据库后,点击导入选择文件浏览

然后选择 create_tables.sql 文件,点下面的“执行”!!

执行后可以在左边数据库发现,多了个名为 phpmydmin 的数据库

我们可以在这个数据库里面发现表,随便看看表名,眼熟一下。

(比较新的版本,pma右边是两个_  就是pma__(旧的版本是单个_,pma_) 

2、然后接下来我们更改配置文件 (config.inc.php) 中参数。旧版本的 phpMyAdmin, config.inc.php 文件就在 phpMyAdmin 这个目录下面,然后比较新的版本,没有这个文件,很多人瞬间就蒙逼了对吧。找不到 config.inc.php 文件那就找config.sample.inc.php,找到 config.sample.inc.php 文件后,将其重命名为 config.inc.php,然后再修改它

为了安全起见,不要用记事本直接修改 php 文件,可以拉到 PHPStorm 里面去编辑,因为如果你直接用记事本编辑 php 文件,有可能会受到 bom 的影响!关于 bom 影响的详细案例,可以看看我以前的相关视频。(当然,99%的 php 文件用记事本直接编辑基本上都是没啥问题的,因为新手对 php 代码不熟悉,所有建议新手修改 php 文件的时候,不要用记事本,用相关的 php 编辑器即可,否则有可能会受到 bom 影响,如果以后你们编辑的 php 文件受到了 bom 影响,可以用 PHPStorm 打开后,一键清除 bom。)

打开 config.inc.php 文件后,很快我们找到 /* Storage database and tables */ 代码下的对应配置表名,看到双斜杠没,我们要删除//注释,让它生效,5.0.1 版大概是20行,旧版本可能少些。

3、重启数据库服务后,大部分用户就好了,如果发现还是提示“phpmyadmin显示高级功能尚未完全设置部分功能未激活”点击查看,出现红色错误-已禁用

看到这种提示,搞的前面我好像啥都没干一样,都是因为权限! 

好接下来我们最后搞定权限就完全没问题了,怎么搞呢,点击第一步导入的左边 账户(旧版为 用户) 菜单

点击 root localhost 的 修改权限(旧版为编辑权限)

然后添加 phpmyadmin 库的全部权限,点击执行

最后重启动一下服务,就没有这个提示了

分类
开发笔记

部分安卓点击img图片会变成预览模式

有四种方式去解决这个问题,当然第一种是最简单的,加一条样式就好了。

1、img{ pointer-events: none; }

2、在img元素上添加 οnclick=”return false”
<img src=”a.png” onclick=”return false” />

3、图片用背景图的方式插入
background:url(XX.png) norepeat center;

4、使用js事件阻止默认行为的方法

var img = document.getElementById('banner');
 
img.addEventListener('click',function(e){
 
  e.preventDefault();
 
});
分类
开发笔记

FastAdmin开发笔记

删除官方链接文件位置(仅个人研究使用,建议保留官方友链支持)
application/admin/view/common/header.html:89
application/admin/view/common/menu.html:38
application/admin/view/index/login.html:100
application/common/view/tpl/dispatch_jump.tpl:49

分类
软件

Jetbrains系列产品phpstorm2019.3最新激活方法

大家熟知Jetbrains的话应该知道:他们家的所有产品升级到2018.2.1及以上版本后,先前可用的注册服务器都失效了,无法激活升级到最新版本体验最新黑科技。

这次要送的这份礼就是: Jetbrains全系列产品2019.3及以下版本(理论上适用于目前所有新老版本)最新注册服务器(License Server)的破解,可使用它来激活你手头上的Jetbrains IDE,具体支持产品和版本见下文的列表。

传送门:
百度云下载:https://pan.baidu.com/s/1FGZ9d5J5amnvf0vMFqSOsQ,提取码:mmk6。
OneDrive:https://1drv.ms/u/s!Atf-z4aXHKwchnzCF15MyOAiXyJv?e=lWHIeN
sha1sum: bc6bd2fcfd5ac83fb0911018d13742660cf90965

已更新v2.2.0, Build Date: 2019-07-19,重新下载jetbrains-agent.jar替换。
支持Activation code注册码激活,可用于网络不佳或离线环境。

自定义License name的朋友访问:https://zhile.io/custom/license
通过下面页面可以获得专属的Activation code(需配合jetbrains-agent.jar)
需要Github授权登录,Github账号注册需要超过7天
将使用你的Github用户名作为License name

在以下IDE版本测试可成功激活:

IntelliJ IDEA 2019.3及以下
AppCode 2019.3及以下
CLion 2019.3及以下
DataGrip 2019.3及以下
GoLand 2019.3及以下
PhpStorm 2019.3及以下
PyCharm 2019.3及以下
Rider 2019.2.3及以下
RubyMine 2019.3及以下
WebStorm 2019.3及以下

本项目只做个人学习研究之用,不得用于商业用途!

若资金允许,请点击链接购买正版,谢谢合作!

学生凭学生证可免费申请正版授权!

创业公司可5折购买正版授权!

分类
开发笔记

腾讯WebService Api 跨域调用

腾讯WebService Api地址,这里我以通过ip获取地理位置为例,来给大家展示一下如何使用。 详细代码如下:

var data = {
    key: "3BFBZ-ZKD3X-LW54A-ZT76D-E7AHO-4RBD5" //替换成自己的key  
};
var url = "https://apis.map.qq.com/ws/location/v1/ip";
data.output = "jsonp";
$.ajax({
    type: "get",
    dataType: 'jsonp',
    data: data,
    jsonp: "callback",
    jsonpCallback: "QQmap",
    url: url,
    success: function (json) {
        //业务处理
    },
    error: function (err) {
        //业务处理
    }
});