Search This Blog

2018/06/14

Missing the MySQL extension which is required by WordPress.

Error:
Your PHP installation appears to be missing the MySQL extension which is required by WordPress.

Install below will solve. MariaDB also need.
php-mysql
php-mysqlnd

CentOS:
yum install php-mysql
yum install php-mysqlnd
# php72
yum install php72-php-mysql
yum install php72-php-mysqlnd

Ubuntu:
apt-get install php-mysql
apt-get install php-mysqlnd

2018/06/12

split in PHP

explode($findThis, $targetString);
explode("/", "ab/dvf/dfa");
> ["ab", "dvf", "dfa"]

str_split($targetString, [int length]);
str_split("dddd");
> ["d", "d", "d", "d"]

str_split("dddd", 2);
> ["dd", "dd"]

QQ mail: 550 Suspected spam ip

qq mail: 550 Suspected spam ip
mail blocked by theIP

http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=20022&&no=1001495
550 Suspected spam ip.
IP 发送大量垃圾邮件,或所发送的邮件收件人存在大量的不存在账号。

Basically It is nothing Service Provide can do, need user to set mail setting.

Solution:
Add domain into whitelist.
Setting》Spam》Set Email whitelist
Setting》Spam》Set domain whitelist
把被拒邮箱的网域加入白名单。
设置》反垃圾》设置邮件地址白名单
设置》反垃圾》设置域名白名单

2018/06/11

Vue.js Tips

Hide elements during loading using "v-cloak"]

v-if vs v-show
Generally speaking, v-if has higher toggle costs while v-show has higher initial render costs. So prefer v-show if you need to toggle something very often, and prefer v-if if the condition is unlikely to change at runtime.

Call vue function from outside third party js
third party js call back a function, like callbackFuc.
In outside js:
var functionName = function(response) {
    vue.$emit('vue_function_name', response)
}
window.callbackFuc = functionName ;
In vue:
....
created() {
    const _component = this;
    this.$root.$on('vue_function_name', (response) => {
        _component.function_name(response);
    }
},
methods: {
    function_name(res) {
        // to do something
    }
}

2018/06/08

Array sort by two keys | array_multisort() | ソート順二つ以上

// array_multisort(): $data を最後のパラメータとして渡し、同じキーでソートする。 
$data[] = ['id' => 1, 'sort_1' => 12, 'sort_2' => 2, 'sort_3' => 'gamma', 'sort_4' => 'Delta']; 
$data[] = ['id' => 2, 'sort_1' => 34, 'sort_2' => 3, 'sort_3' => 'Gamma', 'sort_4' => 'beta']; 
$data[] = ['id' => 3, 'sort_1' => 56, 'sort_2' => 5, 'sort_3' => 'Beta', 'sort_4' => 'Beta']; 
$data[] = ['id' => 4, 'sort_1' => 56, 'sort_2' => 4, 'sort_3' => 'beta', 'sort_4' => 'alpha']; 
$data[] = ['id' => 5, 'sort_1' => 34, 'sort_2' => 1, 'sort_3' => 'Alpha', 'sort_4' => 'Epsilon']; 
$data[] = ['id' => 6, 'sort_1' => 12, 'sort_2' => 6, 'sort_3' => 'alpha', 'sort_4' => 'Zeta']; 

// 列方向の配列を得る 
foreach ($data as $key => $row) {
     $sort_1[$key] = $row['sort_1'];
     $sort_2[$key] = $row['sort_2'];
     $sort_3[$key] = $row['sort_3'];
     $sort_4[$key] = $row['sort_4'];
 }

// データを sort_1 の降順、sort_2 の昇順にソートする。
array_multisort($sort_1, SORT_DESC, $sort_2, SORT_ASC, $data);
print_r("<pre>");
print_r($data);
print_r("</pre>");

// データを sort_3 大文字ではじまる昇順にソートする
array_multisort($sort_3, SORT_ASC, SORT_STRING, $data);
print_r("<pre>");
print_r($data);
print_r("</pre>");

// データを sort_4 小文字で始まる昇順にソートする
array_multisort($$sort_4, SORT_ASC, SORT_REGULAR, $data);
print_r("<pre>");
print_r($data);
print_r("</pre>");

2018/06/01

Fix phpoffice/phpspreadsheet requires ext-gd * error | php72

ENV: PHP7.2
Error message:
phpoffice/phpspreadsheet 1.2.1 requires ext-gd * -> the requested PHP extension gd is missing from your system

In centOs:
sudo yum install php72-php-gd.x86_64

In ubuntu:
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php7.2-gd

Download composer.phar and composer update modules | CentOS

cd path/to/folder/

Download:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
install
php composer-setup.php
remove
php -r "unlink('composer-setup.php');"

php composer.phar update

bash: php: command not found.
# source /opt/remi/php72/enable