php7安装

标 签:

    liunx 下 php7源码安装方法:

1.在php的官网下载php7源码,网址:php.net

2.我用的是centos7做为系统平台,下载的php版本为7.4,命令如下:

cd
mkdir down
cd down
wget -c https://downloads.php.net/~derick/php-7.4.0alpha1.tar.bz2

如果提示没有 wget,直接安装:

yum install wget

3.解压下载的php包

tar -xjvf php-7.4.0alpha1.tar.bz2
cd php-7.4.0alpha1

如果提示 tar (child): bzip2错误,是因为tar没有安装 bz2的解压插件

yum install -y bzip2

4.php7源码安装,跟集成包不一样,得自己配置一些参数,比如最基础的安装路径等

./configure --prefix=/usr

如果提示一些错误,比如没有 c 的编译环境:configure: error: no acceptable C compiler found in $PATH,就安装 c 的编译包

yum install gcc gcc-c++

提示没有  No package 'libxml-2.0' found,安装

yum install -y libxml2 libxml2-devel

5. php7 编译安装

make
make install

6. 安装完成后,运行

php -v

看到版本号就说明安装成功,但一般都会提示,找不到php的,可以进行下面配置

cd
vi .bashrc

在里面添加

alias php=/usr/local/php/bin/php

保存后远行如下命令就可以

source .bashrc

7. php7源码后,其实是没有php.ini配置文件,运行命令,查看 php.ini 配置放在什么位置

php -i | grep php.ini

8.移动配置,先移动到解压的php文件夹里面,里面有两个php.ini的配置文件,一个开发,一个生产的,都可以

cp php.ini-development /usr/local/php/lib/php.ini


PHP / 评 论 (0) / 热度 (55℃) / 2019-07-26 / 阅读全文  / MaWei

vue模板语法

标 签:

html部分:

<div id="app">
    <input type="text" v-model="inputVal" />
    <button v-on:click="sbt">提交</buttion>
    <ul>
        <li v-for="item in list">{{item}}</li>
    </ul>
</div>

创建vue实例:

<script>
    var app = new Vue({
        el:'#app',
        data:{
            list:[],
            inputVal:'123',  //用v-model进行又向绑定,不管是用 app.$data.inputVal=123改变,还是输入框输入都上同步改变。
            
        },
        methods:{
            sbt:function(){
                this.list.push(this.inputVal);
                this.inputVal = '';
            }
        }
    })
</script>


后台编程 / 评 论 (0) / 热度 (111℃) / 2019-04-15 / 阅读全文  / MaWei

laravel路由总结

标 签:

1.laravel默认路由模板

Route::get('url','控制器@动作');

2.laravel支持路由方法

//get方法
Route::get('/','IndexController@index'); 
//post方法
Route::post('/','IndexController@index'); 
//支持所有方法
Route::any('/','IndexController@index'); 
//匹配多种方法
Route::match(['post','get'],'url','IndexController@index');
//其它的方法
Route::put('/','IndexController@index'); 
Route::delete('/','IndexController@index'); 
//使用上面两个方式提交数据时,需要在form表单加入如下的input参数
/**
    <form action="/" method="post">
        <input type="hidden" name="_method" value="put"/>
        <!-- laravel直接用如下方法 -->
        {{ method_field("put") }}
    </form>
 **/

3.laravel路由参数接收

//便用参数占位符的方式,然后控制里可以直接在动作函数形参传入
Route::get('/index/{id}','IndexController@index');//路由写法
//控制器里写法
function index($id){ echo $id;}

4.laravel路由分组,把相同的路由分成一组,简化路由,

//通常我们一个控制器里都有n多个动作,每次写路由都要写相同的,很麻烦,看起来也乱,例如
Route::get('/index','IndexController@index'); 
Route::get('/index/{id}','IndexController@info'); 
Route::get('/index/edit','IndexController@edit');
Route::get('/index/edit/{id}','IndexController@edit');
//这四个路由都在index控制器里,路由里都有 index,这样就可以分成一个组,写法如下
Route::group(['prefix'=>'index'],function(){
    Route::get('/','IndexController@index'); 
    Route::get('/{id}','IndexController@info');
    Route::get('/edit','IndexController@edit');
});
//可以省去 index

5.laravel 路由模型,我还不是很清楚,待补充

后台编程 / 评 论 (0) / 热度 (213℃) / 2018-10-29 / 阅读全文  / MaWei

laravel 框架路径获取函数

标 签: jquery

    1. laravel获取项目根目录函数:

base_path();

    2. laravel获取项目 app 目录函数:

app_path();

    3. laravel获取项目配置 config 目录函数:

config_path();

    4. laravel获取项目数据库 database 目录函数:

database_path();

    5. laravel获取项目入口 public 目录函数:

public_path();

    6. laravel获取项目里某个文件的绝对路径方法如下:

$path = base_path('vendor/bin');
$path = app_path('Http/Controllers/Controller.php');


PHP / 评 论 (0) / 热度 (162℃) / 2018-10-12 / 阅读全文  / MaWei

sublime php格式化代码 phpfmt

标 签: jquery

    我自己写的代码,代码格式化缩进都很好,很注意,但有时候有操蛋的是,看别人的代码,写的真的想死,

由于公司的电脑太差,没办法,只能转到用sublime编辑器写代码,用了一段时间,发现在真的爱上这个编辑器了,

这个编辑真的很好用,但格式化代码他自带的真的不行,所以在网上找了很多,发现一个不错的插件,下面直接上

    本文章介绍格式化php代码,用的插件是 phpfmt,安装方法很简单,

    1.ctrl+shift+p 输入 install package 回车 (如果你连包控制器都没有安装,请自行安装,不会自己在网上找教程)

    2.打开包安装器,在输入框里面输入 phpfmt,回车安装,

    3.安装好后会出现他的简短说明,说明你安装成功了,

    4.配置phpfmt,打开菜单Prferences->Package Settings->phpfmt->Settings user,点击打开,在里面输入如下配置:

{
    "format_on_save": false,
    "php_bin": "C:/wamp64/bin/php/php7.2.4/php.exe",
    "psr1": true,
    "psr1_naming": true,
    "psr2": true,
    "version": 1
}

    注意里面的php_bin路径设置成你的php路径

    5.然后你打开要格式化的文件,然后按ctrl+shift+p 输入phpfmt 选择 phpfmt:format now就可以了

或者按上面提示的快捷键 ctrl+F11也可以

    其它的具体配置请自行看他的文档,文档地址 

    github:https://github.com/nanch/phpfmt_stable

    本人英语水平有限,基本上没有怎么看懂,

    就按我上面的配置够用了

后台编程 / 评 论 (0) / 热度 (116℃) / 2018-10-11 / 阅读全文  / MaWei

scrapy 运行 no module named win32api

标 签: python

在用scrapy写爬虫时,使用命令:

scrapy shell http://doc.scrapy.org/en/latest/_static/selectors-sample1.html

时,报错如果下:

scrapy shell http://doc.scrapy.org/en/latest/_static/selectors-sample1.html
2018-08-30 09:34:39 [scrapy.utils.log] INFO: Scrapy 1.5.1 started (bot: scrapybot)
2018-08-30 09:34:39 [scrapy.utils.log] INFO: Versions: lxml 4.2.4.0, libxml2 2.9.5, cssselect 1.0.3, parsel 1.5.0, w3lib 1.19.0, Twisted 18.7.0, Python 3.6.6 (v3.6.6:4cf1f54eb7, Jun 27 2018, 03:37:03) [MSC v.1900 64 bit (AMD64)], pyOpenSSL 18.0.0 (OpenSSL 1.1.0i  14 Aug 2018), cryptography 2.3.1, Platform Windows-10-10.0.17134-SP0
2018-08-30 09:34:39 [scrapy.crawler] INFO: Overridden settings: {'DUPEFILTER_CLASS': 'scrapy.dupefilters.BaseDupeFilter', 'LOGSTATS_INTERVAL': 0}
2018-08-30 09:34:39 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.corestats.CoreStats',
 'scrapy.extensions.telnet.TelnetConsole']
Traceback (most recent call last):
  File "c:\python36\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "c:\python36\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Python36\Scripts\scrapy.exe\__main__.py", line 9, in <module>
  File "c:\python36\lib\site-packages\scrapy\cmdline.py", line 150, in execute
    _run_print_help(parser, _run_command, cmd, args, opts)
  File "c:\python36\lib\site-packages\scrapy\cmdline.py", line 90, in _run_print_help
    func(*a, **kw)
  File "c:\python36\lib\site-packages\scrapy\cmdline.py", line 157, in _run_command
    cmd.run(args, opts)
  File "c:\python36\lib\site-packages\scrapy\commands\shell.py", line 67, in run
    crawler.engine = crawler._create_engine()
  File "c:\python36\lib\site-packages\scrapy\crawler.py", line 105, in _create_engine
    return ExecutionEngine(self, lambda _: self.stop())
  File "c:\python36\lib\site-packages\scrapy\core\engine.py", line 69, in __init__
    self.downloader = downloader_cls(crawler)
  File "c:\python36\lib\site-packages\scrapy\core\downloader\__init__.py", line 88, in __init__
    self.middleware = DownloaderMiddlewareManager.from_crawler(crawler)
  File "c:\python36\lib\site-packages\scrapy\middleware.py", line 58, in from_crawler
    return cls.from_settings(crawler.settings, crawler)
  File "c:\python36\lib\site-packages\scrapy\middleware.py", line 34, in from_settings
    mwcls = load_object(clspath)
  File "c:\python36\lib\site-packages\scrapy\utils\misc.py", line 44, in load_object
    mod = import_module(module)
  File "c:\python36\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "c:\python36\lib\site-packages\scrapy\downloadermiddlewares\retry.py", line 20, in <module>
    from twisted.web.client import ResponseFailed
  File "c:\python36\lib\site-packages\twisted\web\client.py", line 41, in <module>
    from twisted.internet.endpoints import HostnameEndpoint, wrapClientTLS
  File "c:\python36\lib\site-packages\twisted\internet\endpoints.py", line 41, in <module>
    from twisted.internet.stdio import StandardIO, PipeAddress
  File "c:\python36\lib\site-packages\twisted\internet\stdio.py", line 30, in <module>
    from twisted.internet import _win32stdio
  File "c:\python36\lib\site-packages\twisted\internet\_win32stdio.py", line 9, in <module>
    import win32api
ModuleNotFoundError: No module named 'win32api'

看错误就知道是因为没有win32api,所以下一个安装,应该就没有什么问题了。

安装文件名为 pywin32,安装的方法有两种,安装方法如下:

1.就是直接用pip安装,这个很方便,在linux或者window上都行,命令如下:

pip3 install pywin32

2.就是下载pywin32程序,然后安装就好了,下载地址如下

pywin32下载

进入页面后,选择版本,一直都选择最新的pywin32的版本,点击版本进去就,选择操作系统和python版本,下载安装

就好了

后台编程 / 评 论 (0) / 热度 (216℃) / 2018-08-30 / 阅读全文  / MaWei

sublime 自定义注释

标 签:

    使用sublime的时候,有没有在什么地方加几行代码,然后得标注一下什么时候改过的,谁改过的,所以要注释一下.

    如果每次手动写,很麻烦,有没有一种方法自动生成,肯定是有的.方法如下:

    1.首先得新建一个 snippert ,可以理解为注释模板吧,路径为菜单栏上的 tools->developer->new snippet,会打开一个新

页面,注意的是保存文件名要以 .sublime-snippet 的后缀才行, 里面有如下代码:

<snippet>
 <content><![CDATA[
Hello, ${1:this} is a ${2:snippet}.
]]></content>
 <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
 <!-- <tabTrigger>hello</tabTrigger> -->
 <!-- Optional: Set a scope to limit where the snippet will trigger -->
 <!-- <scope>source.python</scope> -->
</snippet>

    里面主要的配置有两项:

        CDATA[],这里面就是你的注释模板,

        <!-- <tabTrigger>hello</tabTrigger> --> 这项是触发的快捷键

    我的配置如下,也可以自己修改自己喜欢的:

<snippet>
 <content><![CDATA[
  \/*****@Start***@MaWei:${1:f7}*****${2}**********@Start*********\/
  \/*****@End*****@MaWei:${1:f7}*****${2}**********@End*******\/
]]></content>
 <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
 <tabTrigger>des</tabTrigger>
 <!-- Optional: Set a scope to limit where the snippet will trigger -->
 <!-- <scope>source.python</scope> -->
</snippet>

    复制的时候把反斜杠去了,在想要注释的地方输入des然后回车或者tab都行,就会生成这个注释模板了,然后按F7,生成当前时间

在生成时间这个地方,我参考了很多少地方,都没有找到很少的解决方法,网上都是这么写的,应该是自动生成的,

可不知道我就是没有办法自动生成,得按快捷键才行,如果有那个大神知道,可以告诉我一下,QQ:1123265518.

    2.生成时间的方法为新建一个sublime 的插件,在菜单栏上的 tools->developer->new plugin,在里面添加如下代码:

import datetime, getpass
import sublime, sublime_plugin
class AddDateTimeStampCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.view.run_command("insert_snippet", { "contents": "%s" %  datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") } )
class AddDateStampCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.view.run_command("insert_snippet", { "contents": "%s" %  datetime.datetime.now().strftime("%Y-%m-%d") } )
class AddTimeStampCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.view.run_command("insert_snippet", { "contents": "%s" %  datetime.datetime.now().strftime("%H:%M:%S") } )

然后点击保存,名字随便.但名字后缀为.py

    3.最后是添加快捷键,打开自定义快捷键配置, Preferences->key bludings,在里面添加如下:

{ "keys": ["f7"], "command": "add_date_time_stamp" },

 注意前面一条是否有,号结尾.

Python / 评 论 (0) / 热度 (253℃) / 2018-11-28 / 阅读全文  / MaWei

sublime 快捷键插入当前时间

标 签: wamp

    在使用sublime开发的时候,有时候要注释一下开发时间,用手写有点坑,所以就想怎么用快捷生成,费话不多说,方法如下:

    1.添加一个插件,在菜单栏选择, tools->developer->new plugin,然后会打开一个页面,在里面输入如下代码:(注意保存文件时,后缀名为.py)

import sublime
import sublime_plugin
import time
version_format_time = "%Y-%m-%d %H:%M:%S"
version_format_day = "%Y-%m-%d" 
version_pattern = "[0-9]{4}\-[0-9]{2}\-[0-9]{2}_[0-9]{2}\.[0-9]{2}\.[0-9]{2}"
class insert_datetimeCommand(sublime_plugin.TextCommand):
  def run(self, edit):
    sels = self.view.sel()
    for sel in sels:
      if not self.view.find_all(version_pattern):
        self.view.replace(edit, sel, time.strftime(version_format_time))
        return
      region = sublime.Region(0, self.view.size())
      results = self.view.find_all(version_pattern)
      for result in results:
        self.view.replace(edit, result, time.strftime(version_format_time))

class InsertDateCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        sel = self.view.sel();
        for s in sel:
            self.view.replace(edit, s, time.strftime(version_format_day))

    2.添加快捷键,也是在菜单栏选择, Preferences->key bludings,打开一个自定义快捷键,在里面的 [ ] 里面添加如下代码:

 { "keys": ["f5"], "command": "insert_datetime" },
 { "keys": ["f6"], "command": "insert_date" },

    要注意的是,如果里面有,添加在最尾行的时候,前面一行后面有没有,号,如果没有得加上,不然就报错了,

    这个设置的快捷键为 F5 ,F6,F5为时间到秒, F6为时间到天,如果需要改成最它快捷键,自己改.

Python / 评 论 (0) / 热度 (105℃) / 2018-07-20 / 阅读全文  / MaWei