apache gzip

#取消注释
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
#http.conf
<IfModule mod_deflate.c>
    SetOutputFilter DEFLATE    #必须的,就像一个开关一样,告诉apache对传输到浏览器的内容进行压缩
 
    SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary #设置不对后缀gif,jpg,jpeg,png的图片文件进行压缩
    SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary #同上,就是设置不对exe,tgz,gz。。。的文件进行压缩
    SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
 
    AddOutputFilterByType DEFLATE text/* #设置对文件是文本的内容进行压缩,例如text/html  text/css  text/plain等
    AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript #这段代码你只需要了解application/javascript application/x-javascript这段就可以了,这段的意思是对javascript文件进行压缩
    AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp #这段是告诉apache对php类型的文件进行压缩
 
    BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.x 有一些问题,所以只压缩文件类型是text/html的
    BrowserMatch ^Mozilla/4.0[678] no-gzip # Netscape 4.06-4.08 有更多的问题,所以不开启压缩
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # IE浏览器会伪装成Netscape ,但是事实上它没有问题
</IfModule>

wordpress FTP

使用FTP软件连接FTP空间,进入wp-content目录,新建tmp文件夹,设置文件夹的权限为777
下载:在FTP中返回网站根目录,找到wp-config.php这个PHP文件,下载到本地
修改:在wp-config.php中添加下列三行代码:
define(‘WP_TEMP_DIR’, ABSPATH.’wp-content/tmp’);/* WordPress的临时目录。*/
define(“FS_METHOD”, “direct”);
define(“FS_CHMOD_DIR”, 0777);
define(“FS_CHMOD_FILE”, 0777);
注意:要在定义ABSPATH的后面,即在它的后面添加
if ( !defined(‘ABSPATH’) )
define(‘ABSPATH’, dirname(__FILE__) . ‘/’);
================================
最后的代码应该是:
if ( !defined(‘ABSPATH’) )
define(‘ABSPATH’, dirname(__FILE__) . ‘/’);
define(‘WP_TEMP_DIR’, ABSPATH.’wp-content/tmp’);
define(“FS_METHOD”, “direct”);
define(“FS_CHMOD_DIR”, 0777);
define(“FS_CHMOD_FILE”, 0777);
彻底解决wordpress安装主题或插件需要FTP问题
上传:上传覆盖wp-config.php文件
设置wp-content目录中的plugins(插件)和themes(主题)文件夹权限为777。
至此,你的插件和主题已经可以自动更新了。
此为终极解决办法,其它都为阉割版本。
为了安全,应在.htaccess中把 tmp、themes、plugin 这些读写权限为777的文件夹,设置为没有执行权限。

WordPress多域名绑定方法

有时候想,如果wordpress能像discuz论坛一样,能用其他域名或IP访问同一网站而且打开帖子就好了。我在本地装了wordpress,而且绑定了域名,有网络的时候可以用域名访问和使用网站,但是没网络的时候想用IP访问使用却不能。比如我用192.168.1.2访问本地的网站是可以的,但是wordpress的后台已经设置的网址是abc.com,所以没网络的时候,不能打开文章,因为它的网址还是abc.com/123.html的格式,不是192.168.1.2/123.html格式。这一点就比不上discuz,因为discuz两者都可以访问和使用网站。

从网上收到了一个好方法,让wordpress也像discuz一样,可以多域名或IP访问使用同一网站。在网站根目录找到wp-config.php 文件,在文件里找代码 require_once(ABSPATH . ‘wp-settings.php’); 在其上面添加以下代码(一定要在这段代码的上面,不然无法读取CSS样式、图片等等。):

$home = ‘http://’.$_SERVER[‘HTTP_HOST’];

$siteurl = ‘http://’.$_SERVER[‘HTTP_HOST’];

define(‘WP_HOME’, $home);

define(‘WP_SITEURL’, $siteurl);

我们知道,PHP 中的 $_SERVER[‘HTTP_HOST’] 用于获得来路域名。这样,就能根据来路为 WP_HOME 和 WP_SITEURL 变量赋值,实现 WordPress 多域名绑定。

注意:为防止域名改变而造成图片不可用,必须在控制面板的“设置 (Settings) – 媒体 (Media)”里将“文件的完整 URL 地址”设为 “wp-content/uploads”(与“默认上传路径”参数相同)。如果你在固定链接里设置了非默认的其他项,在“文件的完整 URL 地址”添加 “wp-content/uploads”会使图片链接不对。

laravel npm run dev error

错误:SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode

node版本低,node5.0在文件第一行加 ”use strict”,或者更新node


brew upgrade node#更新node

curl -sL https://deb.nodesource.com/setup_6.x | bash –

apt-get install nodejs

错误:cross-env NODE_ENV=development webpack –watch –progress –hide-modules –config=node_modules/laravel-mix/setup/webpack.config.js

npm rebuild node-sass

npm run dev#successfully

PHP中spl_autoload_register函数的用法

spl_autoload_register
(PHP 5 >= 5.1.2)
spl_autoload_register — 注册__autoload()函数
说明
bool spl_autoload_register ([ callback $autoload_function ] )
将函数注册到SPL __autoload函数栈中。如果该栈中的函数尚未激活,则激活它们。
如果在你的程序中已经实现了__autoload函数,它必须显式注册到__autoload栈中。因为
spl_autoload_register()函数会将Zend Engine中的__autoload函数取代为spl_autoload()或
spl_autoload_call()。
参数
autoload_function 
欲注册的自动装载函数。如果没有提供任何参数,则自动注册autoload的默认实现函数
spl_autoload()。
返回值
如果成功则返回 TRUE,失败则返回 FALSE。
注:SPL是Standard PHP Library(标准PHP库)的缩写。它是PHP5引入的一个扩展库,其主要功能包括autoload机制的实现及包括各种Iterator接口或类。 SPL autoload机制的实现是通过将函数指针autoload_func指向自己实现的具有自动装载功能的函数来实现的。SPL有两个不同的函数 spl_autoload, spl_autoload_call,通过将autoload_func指向这两个不同的函数地址来实现不同的自动加载机制。
范例
设我们有一个类文件A.php,里面定义了一个名字为A的类:

view plaincopy to clipboardprint?
<?php   
class A   
{   
public function __construct()   
{   
echo 'Got it.';   
}   
}


然后我们有一个index.php需要用到这个类A,常规的写法就是

view plaincopy to clipboardprint?
<?php   
require('A.php');   
$a = new A();


但是有一个问题就是,假如我们的index.php需要包含的不只是类A,而是需要很多类,这样子就必须写很多行require语句,有时候也会让人觉得不爽。


不过在php5之后的版本,我们就不再需要这样做了。在php5中,试图使用尚未定义的类时会自动调用__autoload函数,所以我们可以通过编写__autoload函数来让php自动加载类,而不必写一个长长的包含文件列表。

例如在上面那个例子中,index.php可以这样写:

view plaincopy to clipboardprint?
<?php   
function __autoload($class)   
{   
$file = $class . '.php';   
if (is_file($file)) {   
require_once($file);   
}   
}   

$a = new A();

 

当然上面只是最简单的示范,__autoload只是去include_path寻找类文件并加载,我们可以根据自己的需要定义__autoload加载类的规则。

此外,假如我们不想自动加载的时候调用__autoload,而是调用我们自己的函数(或者类方法),我们可以使用spl_autoload_register来注册我们自己的autoload函数。它的函数原型如下:
bool spl_autoload_register ( [callback $autoload_function] )

我们继续改写上面那个例子:

view plaincopy to clipboardprint?
<?php   
function loader($class)   
{   
$file = $class . '.php';   
if (is_file($file)) {   
require_once($file);   
}   
}   

spl_autoload_register('loader');   

$a = new A();

 

这样子也是可以正常运行的,这时候php在寻找类的时候就没有调用__autoload而是调用我们自己定义的函数loader了。同样的道理,下面这种写法也是可以的:

view plaincopy to clipboardprint?
<?php   
class Loader   
{   
public static function loadClass($class)   
{   
$file = $class . '.php';   
if (is_file($file)) {   
require_once($file);   
}   
}   
}   

spl_autoload_register(array('Loader', 'loadClass'));   

$a = new A();

linux debain服务器配置

debian 软件包 https://packages.debian.org/stable/

whereis apache2
dpkg -L apache2 查看安装的包在哪里

apt-get install locales
dpkg-reconfigure locales
#勾选“en_US.UTF-8”和“zh_CN.UTF-8”
apt-get update#安装时提示404则更新下
apt-get dist-upgrade
apt-get install apache2
apt-get install mysql-server
apt-get install php7.2-fpm
apt-get install php7.2-mbstring
apt-get install php7.2-dom
apt-get install php7.2-curl
apt-get install php7.2-gd
apt-get install php7.2-mysql
service php7.2-fpm restart
apt-get install git
apt-get install node
apt-get install npm
npm install -g pm2
apt-get install redis-server
#composer
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
mv composer.phar /usr/local/bin/composer
#apache配置
vi /etc/apache2/apache2.conf
# AllowOverride all
a2enmod rewrite#开启重写模块,取消模块a2dismod
#gzip
a2enmod deflate#压缩模块
a2enmod headers
vi /etc/apache2/mods-available/deflate.conf
#添加
        SetOutputFilter DEFLATE
        SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
        SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
        SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
        AddOutputFilterByType DEFLATE text/*
        AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript
        AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp
        BrowserMatch ^Mozilla/4 gzip-only-text/html
        BrowserMatch ^Mozilla/4.0[678] no-gzip
        BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
a2enmod deflate
#apache站点
cd /etc/apache2/sites-available
cp -f 000-default.conf xuanzeta.com.conf
vi xuanzeta.com.conf
#重写
#RewriteEngine on 
        #RewriteCond   %{HTTPS} !=on 
        #RewriteRule   ^(.*)  https://%{SERVER_NAME}$1 [L,R] 
#servername
ServerName xuanzeta.com
DocumentRoot /var/www/web
#代理
#DocumentRoot /var/www/zhshht/public
        ProxyPreserveHost On 
        ProxyPass / http://localhost:6001/ 
        ProxyPassReverse / http://localhost:6001/ 

:wq
a2ensite xuanzeta.com.conf#启动站点,取消站点a2dissite
service apache2 reload
service apache2 restart
#远程mysql
#netstat -an|grep 3306 端口未开放
vi /etc/mysql/my.cnf
#bind-address = 127.0.0.1
service mysql restart
mysql -u root -p

 

mac VIM

https://github.com/mxyg/f-vim

sudo xcodebuild -license

brew install lua

https://github.com/mxyg/vim-plug

:PlugInstall