Line分享

製作Line分享按鈕請先參考官方文檔用LINE傳送。簡單說是Line分享只能傳一條文本消息和一個url鏈接。http://形式會先跳轉到Line服務器的一個網頁,讓用戶選擇打開Line還是安裝Line。line://形式則直接打開Line進行分享,但是如果用戶沒有安裝Line則按鈕會沒有反應。

使用中發現,Line對Emoji的支持還是很好的,可以放到分享信息中,可以參見Emojiえもじ。同時還發現Line對url的支持有問題,即url中如果出現非英文字符,Line即會將url中剩餘部分丟棄,造成url丟失數據。其實這個解決起來很簡單,用php自帶的base64函數把中文編碼一下再傳遞就好了。只用base64是不行的,因為裡面會有空格等字符會被Line裁掉,所以在加一層urlencode就好了。

//js中定義好Line的分享鏈接,name用base64加密,下面一行php被wordpress保護機制注釋了。
var urlShare="http://www.55mun.com/gameh5/match3/indexv.php?name=<?php echo urlencode(base64_encode($name));?>";
//php中接收並解析出name
$n=htmlspecialchars(base64_decode(urldecode($_GET["name"])));


Line分享網址抓取錯誤

有次分享網址,抓取到的縮略圖和標題都是網站主頁的信息,後來發現是head裏有一條meta信息導致的,這條meta中的url必須是分享的url,否則line就肯定會按照這個meta中的url來抓取:

<meta http-equiv="mobile-agent" content="format=html5;url=http://thePage.you.wishToShare/">

關注Line@

寫法1:

Follow <a href="line://ti/p/@myLineAtAccount">myLineAtAccount</a>

寫法2:

Follow <a href="intent://ti/p/@myLineAtAccount#Intent;scheme=line;action=android.intent.action.VIEW;category=android.intent.category.BROWSABLE;package=jp.naver.line.android;end">myLineAtAccount</a>

Mobile Detect

Mobile_Detect is a lightweight PHP class for detecting mobile devices (including tablets). It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.

用.htaccess實現二級域名網站

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(test.)?domin.com$
RewriteCond %{REQUEST_URI} !^/testFolder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /testFolder/$1
RewriteCond %{HTTP_HOST} ^(test.)?domin.com$
RewriteRule ^(/)?$ testFolder/index.php [L]

萬網的輕雲服務器不推薦大家購買,說是服務器,文件只能通過ftp傳,而且還自動刪.htaccess。雖然.htaccess上傳後就不見了,運氣好的話規則還是起作用的,爲什麼這麼說呢,因爲他們的輕雲服務器有獨特的.htaccess語法,真是坑。上面的代碼經過測試是可用的。爲什麼這麼不好還要用呢,備案啊,穩定性啊當然還有很便宜的價格。

在ubuntu上部署apache和laravel5

新建一個laravel項目:

#切換到目標目錄,如:
cd /var/www/
#創建項目l5
sudo composer create-project laravel/laravel l5
#改變文件所有者爲自己,方便編輯
sudo chown USER:USER -R l5
#這兩個文件夾要設置777,否則服務器5000錯誤
cd l5
sudo chmod 777 -R storage/ vendor/
#配置數據庫信息
nano .env
php artisan migrate

如果是新建的apache服務器,可能需要開啟mod_rewrite模塊,可在phpinfo()中搜索mod_rewrite查看模塊是否開啟成功。可以參考:ubuntu搭建web服务器。然後新建一個虛擬主機,我們直接在/etc/apache2/sites-available/000-default.conf中添加一個VirtualHost:

<VirtualHost *:80>
    ServerAdmin service@mail.com
    DocumentRoot "/var/www/l5/public"
    ServerName l5.local
    ServerAlias www.l5.local

    <Directory "/var/www/l5/public">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

修改host文件/etc/hosts,添加一行127.0.0.1對應l5.local

此時就能通過http://l5.local訪問laravel5項目,通過http://l5.local/home測試用戶註冊登陸等。

題外話:我這裏的代碼高亮用的WP SyntaxHighlighter Version 1.7.3,在顯示VirtualHost起始標籤的時候有錯誤,所以後來用了原始的pre標籤。不知道有什麼解決辦法。

沃通免费数字证书试用

申请了沃通的免费数字证书,现在网站也可以用https访问了。申请很方便,只需要提供个邮箱就可以了,而且很快就能拿到手。网站所有权我用的是上传文件的方式验证的,也算方便。Vesta面板在SSL方面设计很方便,可以手动生成CSR,然后把生成的证书请求粘贴给沃通,自己把其他部分都存起来。证书下来后,解压for Other Server.zip,在Vesta面板SSL配置区中,SSL证书就粘进去4_yoursite.crt;SSL Key就粘前面生成CSR时生成的RSA PRIVATE KEY;SSL证书颁发机构这个虽然写的可选,实际是必填项,需要依次粘入3_issuer,2_cross,1_root。这样就完成了。

wordpress在settings-general里把两个链接前都改为https,后台就是https了。前台直接写https访问就是https,否则还是http。


之前填写错误,导致PC端没问题,手机端一直提示不被信任。后来找客服,客服态度非常好,折腾几下没成功后来直接远程给我操作了!

nginx和yii2

记录下Ubuntu12.04安装nginx遇到的问题。

nginx安装好后打开php遇到File not found

修改/etc/nginx/conf.d/default.conf文件。首先在server下添加root,然后修改fastcgi_param为SCRIPT_FILENAME $document_root$fastcgi_script_name;

server {
    listen       80;
    server_name  localhost;
    root         /usr/share/nginx/html;

    #charset koi8-r;
    ...
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    ...

php升级到5.5

新版Yii要求php5.4或更高,但Ubuntu12.04库中的默认版本是5.3.所以我就直接添加PPA升级了。

sudo apt-get update && sudo apt-get install python-software-properties  
sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update && sudo apt-get dist-upgrade

升级后打开php页面出现502 Bad Gateway,把/etc/php5/fpm/pool.d/www.conf中listen = /var/run/php5-fpm.sock替换成listen = 127.0.0.1:9000就好了。可能是升级后/var/run/php5-fpm.sock被删除了。更多升级到5.5导致502 Bad Gateway,请参考Fix “502 Bad Gateway” error on NGINX server after upgrading PHP

安装phpmyadmin

sudo apt-get install phpmyadmin  
sudo ln -s /usr/share/phpmyadmin/ /usr/share/nginx/html/phpmyadmin

如果nginx配置文件没有加index.php会出现403错误。应该把/etc/nginx/conf.d/default.conf中字段配置为这样:

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm index.php;
    }

安装Composer

curl -sS https://getcomposer.org/installer | php  
sudo mv composer.phar /usr/local/bin/composer

通过Composer安装yii

首先切换到网站目录下,如/opt/lampp/htdocs。安装basic版:

sudo php composer.phar create-project yiisoft/yii2-app-basic basic 2.0.1

安装advanced版

sudo php composer.phar create-project yiisoft/yii2-app-advanced advanced 2.0.1
Continue reading

混乱的DNS

这个域名是GoDaddy上注册的,用的也是他们的DNS解析。设置好域名IP后大约半个小时,这边广东铁通、Opera Mini、Go Agent就能正常访问了,但是另外一个小区宽带(长城宽带)过了2天还是无法访问。现在已经过了60个小时了,测了一下,不能访问的地方还挺多的,下面是测试结果:

Continue reading