phpstrom 2018.2 修改代码星号不见

安装2018.2新版本后发现在修改代码后标签栏的星号标记不见了。不知道为什么默认取消了,重新设置即可。
进入 File -> Settings -> Editor ->General-> Editor Tabs,
勾选下面选项:
Mark modified (*)

发表在 服务器 | 标签为 | 留下评论

git本地删除修改文件后从远程拉取

命令模式:

一个文件就:

git checkout origin/master netpc.com.cn.txt

全部就:

git checkout origin .

 

发表在 服务器 | 标签为 | 留下评论

CentOS安装服务器端Git

服务器端

安装git
yum –y install git

创建git用户
useradd git
passwd git

创建git项目
cd /data/git
git init –bare netpc.com.cn.git
chown git:git netpc.com.cn.git

为了安全设置git登录方式
vi /etc/passwd
git:x:502:502::/home/git:/usr/bin/git-shell

客户端

网上找个安装git for windows

加入密钥方式免密码同步。

创建密钥
ssh-keygen -t rsa -C “你的邮箱”

本地取得密钥
一般到C:\Users\Administrator\.ssh\id_rsa.pub找到.ssh目录下的id_rsa.pub文件,复制其中内容到服务器端。

将密钥加入服务器列表
服务器创建了git用户,在home就有该目录了,没有对应文件就创建,复制秘钥的内容到文件里。

vi /home/git/.ssh/authorized_keys

复制后保存退出。

或者将id_rsa.pub传到 git服务器,使用命令复制
cat id_rsa.pub >> authorized_keys (注意是>>,不是>,>会覆盖旧的数据

设置ssh文件夹为700权限,authorized_keys为 600权限

本地git pull试试看

 

发表在 服务器 | 标签为 | 留下评论

服务器ssh登录经常自动掉线

1.secureCRT客户端设置

secureCRT:选项->会话选项->终端->反空闲 中设置每隔多少秒发送一个字符串,或者是NO-OP协议包
putty:putty -> Connection -> Seconds between keepalives ( 0 to turn off ), 默认为0, 改为300.

2.服务器设置

vi /etc/ssh/sshd_config

ClientAliveInterval指定了服务器端向客户端请求消息 的时间间隔, 默认是0, 不发送

ClientAliveInterval 60表示每分钟发送一次, 然后客户端响应, 这样就保持长连接了

ClientAliveCountMax, 使用默认值3即可.ClientAliveCountMax表示服务器发出请求后客户端没有响应的次数达到一定值, 就自动断开

3.重启ssh服务

service sshd restart

发表在 服务器 | 标签为 | 留下评论

phalcon单独执行select update等sql语句

这里简单举例下phalcon执行sql执行方法,具体看devtools下的pdo.php文件。

在控制器下可以执行以下代码:

$success = $this->di->get('db')->query("update netpc set webname = 'netpc.com.cn' where id = $id");

print_r($success->numRows());

其他方式:

* <code>
* $result = $this->di->get('db')->query("SELECTFROM robots ORDER BY name");
* $result->setFetchMode(Phalcon\Db::FETCH_OBJ);
* while ($robot = $result->fetch()) {
* echo $robot->name;
* }
* </code>
* <code>
* $result = $this->di->get('db')->query("SELECTFROM robots ORDER BY name");
* $result->setFetchMode(Phalcon\Db::FETCH_NUM);
* while ($robot = result->fetchArray()) {
* print_r($robot);
* }
* </code>
发表在 服务器 | 标签为 | 留下评论

Phalcon在phpstorm识别提示内置函数和语法

我的环境windows7和phpstrom 2018.2

首先下载phalcon-devtools包

在 https://github.com/phalcon/phalcon-devtools/releases 下载phalcon-devtools。

解压后进入ide目录修改gen-stubs.php

将 ide/gen-stubs.php 文件中的常量改成你的解压的目录路径:

define('CPHALCON_DIR' , 'E:\phpStudy\WWW\phalcon\phalcon-devtools-3.4.0');

然后在cmd窗口执行如下命令:

php gen-stubs.php

成功后会在ide文件下生产1个带版本名称的文件夹

进入我的就是E:\phpStudy\WWW\phalcon\phalcon-devtools-3.4.0\ide\2.0.10\Phalcon

之后就是你所用的IDE将生成的路径包含进来

打开phpstrom,左边项目external libraries点击右键

选择configure php include paths…

在include paths点击旁边+号,选择刚才的目录

重启ide,ctrl点击phalcon内置函数看看有跳转提示没?

 

 

 

发表在 服务器 | 标签为 , | 留下评论

phpstrom自动换行

点击File->Settings->Editor->General,右侧勾选Soft Wraps下的

Use soft wraps in editor

点击appaly应用即可

发表在 服务器 | 标签为 | 留下评论

更新Alpine Linux源

  • 国内镜像源

清华TUNA镜像源:https://mirror.tuna.tsinghua.edu.cn/alpine/
中科大镜像源:http://mirrors.ustc.edu.cn/alpine/
阿里云镜像源:http://mirrors.aliyun.com/alpine/

  • 如何配置软件源

可以使用如下命令:

sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories

也可以直接编辑 /etc/apk/repositories 文件。以下是 v3.5 版本的参考配置:

$ vi /etc/apk/repositories
# /media/cdrom/apks
http://mirrors.ustc.edu.cn/alpine/v3.5/main
http://mirrors.ustc.edu.cn/alpine/v3.5/community

upgrade命令升级系统已安装的所以软件包(一般包括内核),当然也可指定仅升级部分软件包(通过-u或–upgrade选择指定)。upgrade:升级当前已安装的软件包

$ apk update #更新最新本地镜像源
$ apk upgrade #升级软件
$ apk add --upgrade busybox #指定升级部分软件包

search命令搜索可用软件包,-v参数输出描述内容,支出通配符,-d或–description参数指定通过软件包描述查询。search:搜索软件包

$ apk search #查找所以可用软件包
$ apk search -v #查找所以可用软件包及其描述内容
$ apk search -v 'acf*' #通过软件包名称查找软件包
$ apk search -v -d 'docker' #通过描述文件查找特定的软件

http://mirrors.ustc.edu.cn/help/alpine.html

发表在 服务器 | 留下评论

apt-get、dpkg、deb 和yum、rpm 区别和关系

 

linux主要两大派系:

RedHat 系列:Redhat、Centos、Fedora 等

  • 常见的安装包格式 rpm 包,安装rpm包的命令是“rpm -参数”
  • 包管理工具 yum

Debian系列:Debian、Ubuntu 等

  • 常见的安装包格式 deb 包,安装 deb 包的命令是“dpkg -参数”
  • 包管理工具 apt-get

两者的区别是dpkg绕过apt包管理数据库对软件包进行操作,所以你用dpkg安装过的软件包用apt可以再安装一遍,系统不知道之前安装过了,将会覆盖之前dpkg的安装。

1、dpkg是用来安装.deb文件,但不会解决模块的依赖关系,且不会关心ubuntu的软件仓库内的软件,可以用于安装本地的deb文件。
2、apt会解决和安装模块的依赖问题,并会咨询软件仓库, 但不会安装本地的deb文件, apt是建立在dpkg之上的软件管理工具。

这样也就解释了rpm和yum的关系。

发表在 服务器 | 标签为 , , | 留下评论

docker镜像php5.3-fpm安装redis、memcache、memcached扩展

一个踩坑学习过程,有个老系统必须运行在php5.3-fpm上,在阿里云上找了个镜像才40m很开心,启动容器就弄了半天。nginx是本地的,php是docker容器上的。

本地创建一个nginx放网站的目录/data/wwwroot/default,使用参数-v映射到容器上,这样本地配置nginx才不需要去指对应的目录。

没用-v映射nginx就必须如下:

fastcgi_param SCRIPT_FILENAME /data/wwwroot/default$fastcgi_script_name;

做了映射就默认如下:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

启动容器:

root@netp.com.cn:/home/ken# docker run –name php5.3.29 -p 9000:9000 -v /data/wwwroot/default:/data/wwwroot/default -it registry.cn-hangzhou.aliyuncs.com/sjdskl/php5.3-fpm:latest

接着要登录容器操作,也是坑:

rpc error: code = 13 desc = invalid header field value “oci runtime error: exec failed:

最后登上去了,很开心,看看是什么系统先:

/var/www/html # uname -a
Linux 9eb38713fded 4.4.0-45-generic #66-Ubuntu SMP Wed Oct 19 14:12:37 UTC 2016 x86_64 Linux
/var/www/html # cat /proc/version
Linux version 4.4.0-45-generic (buildd@lgw01-34) 
(gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.2) )
 #66-Ubuntu SMP Wed Oct 19 14:12:37 UTC 2016

2个命令都看到Ubuntu,这就容易了,开心,接着就发现我靠,

/bin/sh: apt-get: not found

什么没有apt,搞什么精简的结果,继续往坑了跳,没有那就安装了

网上找了半天在官网下了个包

http://security.ubuntu.com/ubuntu/pool/main/a/apt/

再使用dpkg命令来安装deb包,执行 dpkg -i apt_1.6.3_amd64.deb

靠接着出错,

/usr/src # dpkg -i apt_1.6.3_amd64.deb
 dpkg: error: failed to open package info file '/var/lib/dpkg/status' for reading: No such file or directory

这是什么鬼,后来我从本地复制了一个status进去,还是无法安装。

经过痛苦的过程我发现

/usr/src # cat /etc/issue
 Welcome to Alpine Linux 3.4
 Kernel \r on an \m (\l)

我里个去,怎么跑出来个Alpine Linux,不是Ubuntu吗?经过一番搜索原来是docker推荐的系统,骂人千百遍,也知道它的包管理器apk命令。接着就真的好办了吗?

下载的时候因为没有wget,搞的我还学会了一个curl -O来下来。

说下apt-get、dpkg、deb 和yum、rpm 区别和关系

现在先安装redis扩展

/usr/src/php/ext # wget https://github.com/phpredis/phpredis/archive/3.1.3.tar.gz

tar xfz 3.1.3.tar.gz

mv phpredis-3.1.3/ redis

docker-php-ext-install redis

无论我用3.1.3.tar.gz还是2.2.8.tar.gz都会出现以下错误。

configure: error: /bin/sh ./config.sub x86_64-linux-musl failed

换个方式安装pecl:

pecl install redis
echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini

http://php.net/manual/zh/install.pecl.pear.php
卸载可以用pecl uninstall redis

这里还要说下php -i可以看到Scan this dir for additional .ini files 和Additional .ini files parsed 都指向了/usr/local/etc/php/conf.d/这个目录,所以配置要放那里去。

重启php后可以 php -m看下模块。

接着安装memcached你会发现提示需要libmemcached。就是需要这个支撑的意思。

wget https://launchpadlibrarian.net/165454254/libmemcached-1.0.18.tar.gz 
cd libmemcached-1.0.18 
tar -xvzf libmemcached-1.0.18.tar.gz 
./configure --with-memcached --disable-memcached-sasl
make 

下载、解压后配置、编译就以下错误。

CXX libtest/libtest_libtest_la-cmdline.lo
libtest/cmdline.cc:65:15: error: 'environ' was declared 'extern' and later 'static' [-fpermissive]
 static char **environ= NULL;
 ^
In file included from ./libtest/common.h:77:0,
 from libtest/cmdline.cc:39:
/usr/include/unistd.h:182:15: note: previous declaration of 'environ'
 extern char **environ;
 ^
libtest/cmdline.cc: In member function 'libtest::Application::error_t libtest::Application::run(const char**)':
libtest/cmdline.cc:206:12: error: 'POSIX_SPAWN_USEVFORK' was not declared in this scope
 flags |= POSIX_SPAWN_USEVFORK;
 ^
Makefile:7305: recipe for target 'libtest/libtest_libtest_la-cmdline.lo' failed
make[1]: *** [libtest/libtest_libtest_la-cmdline.lo] Error 1
make[1]: Leaving directory '/usr/src/php/ext/libmemcached-1.0.18'
Makefile:3700: recipe for target 'all' failed
make: *** [all] Error 2
/usr/src/php/ext/libmemcached-1.0.18 #

一直没解决,认为是gcc导致的,系统gcc版本5.30。

最后发现Alpine Linux竟然有自带的,马上试试看。

/usr/src/php/ext# apk search libmemcached
libmemcached-doc-1.0.18-r1
libmemcached-libs-1.0.18-r1
libmemcached-1.0.18-r1
libmemcached-dev-1.0.18-r1

搜索下有包,马上add添加。

/usr/src/php/ext# apk add libmemcached
(1/4) Installing db (5.3.28-r0)
(2/4) Installing libsasl (2.1.26-r7)
(3/4) Installing libmemcached-libs (1.0.18-r1)
(4/4) Installing libmemcached (1.0.18-r1)
Executing busybox-1.24.2-r14.trigger
OK: 228 MiB in 68 packages

完成后运行安装memcached,3.0以上需要php7,所以我们安装2.2

/usr/src/php/ext # pecl install memcached-2.2.0

提示错误:

ERROR: `/tmp/pear/temp/memcached/configure --with-libmemcached-dir=no' failed

接着我搜索整个盘

/usr/src/php/ext # find / -name libmemcached

没有发现相关libmemcached目录。

竟然n次痛苦个各种尝试失败,最后我发现apk search libmemcached搜索出来的几个包不是全部都安全进去,我就一个个安装,终于在

apk add libmemcached-dev

这个安装后多了目录:

/usr/include/libmemcached

重新安装输入

libmemcached directory [no] : /usr/include/libmemcached

编译接着还是错,折磨死人啊。

直接下载源码编译安装:

wget https://pecl.php.net/get/memcached-2.2.0.tgz
tar xfz memcached-2.2.0.tgz
cd memcached-2.2.0/
/usr/local/bin/phpize

./configure –with-php-config=/usr/local/bin/php-config –enable-memcached –with-libmemcached-dir=/usr/include/libmemcached –disable-memcached-sasl

配置出现以下错误

checking for libmemcached location… configure: error: Unable to find memcached.h under /usr/include/libmemcached

根据查找,因为源码的原因需要做个软链接。

/var/www/html # mkdir -p /usr/lib/x86_64-linux-gnu/include/libmemcached
/var/www/html # ln -s /usr/include/libmemcached/memcached.h /usr/lib/x86_64-linux-gnu/include/libmemcached/memcached.h

再重新配置。

./configure –with-php-config=/usr/local/bin/php-config –enable-memcached –with-libmemcached-dir=/usr/lib/x86_64-linux-gnu –disable-memcached-sasl

错误需要zlib

checking for zlib location… configure: error: memcached support requires ZLIB. Use –with-zlib-dir=<DIR> to specify the prefix where ZLIB headers and library are locate

安装 apk add zlib-dev包,配置通过了。

接着make编译出现不同的提示?

/usr/include/libmemcached-1.0/struct/sasl.h:39:23: fatal error: sasl/sasl.h: No such file or directory

再次安装apk add cyrus-sasl-dev包

make再编译终于通过了,我的天啊。

Build complete.
Don't forget to run 'make test'.

make install安装

/usr/src/php/ext/memcached-2.2.0 # make install
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20090626/

到这里你应该懂了吧。修改ini配置

vi /usr/local/etc/php/php.ini

extension=memcache.so
extension=memcached.so

重启php即可。php -m看了下 都有了

https://pecl.php.net/官方地址 php各种扩展

到这里终于大功告成,我想安装过这次扩展应该什么版本都会装了吧。

有问题留言。这里基本都是netpc.com.cn原创。

发表在 服务器 | 标签为 , | 留下评论