分類
网站

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

本文更新於 2015/04/04。

分類
网站

PURE CSS3 3D CUBE

上面例子運行效率很差,在低版本的火狐中竟不能運行,所以如果真要做CSS 3D Cube是不推薦的。性能更佳的案例請參考:Create a CSS Cube

本文更新於 2016/10/20。

分類
网站

sliderkit自适应大小

其实这个sliderkit之前介绍过,只是那篇没有自适应的功能。用jquery实现元素的自适应,其实很简单。要实现这个slider自适应首先要设置这个slider属于photoslider-mini类自适应尺寸,然后让slider中的图片自适应尺寸。通过如下代码:

$(document).ready(function(){
    //slider图片尺寸是 960px*340px, container是slider的父容器
    var sliderWidth=$("div.container").width()>960 ? 960 : $("div.container").width();
    $("div.photoslider-mini").css({"width":sliderWidth,"height":sliderWidth*340/960});
    //如果使用了bootstrap的话,只要给img添加.img-responsive就可以了,效果更好
    $(".sliderkit-panel > img").css({"width":sliderWidth,"height":sliderWidth*340/960});
});

效果:

slider show 1
slider show 3
slider show 5

最终失败了,估计是和sliderkit的原理有关。另外还了解到要调用WordPress的jquery要像下面这样,因为它设置了jQuery.noConflict();

    jQuery(document).ready(function($) {
        //显示jquery版本号
        alert($.fn.jquery);
    });
分類
程序 网站

自动检查网页更新

需求:http://www.cnca.gov.cn/ywzl/gjgnhz/jkzl/这个网页会公布进口水产品境外生产企业注册名单,但公布日期不一定,所以想自动检查美国(2014年07月21日)这个条目是否更新了,如果更新了发邮件通知我。方法:获取网页,查看网页是否存在“美国(2014年07月21日)”若不存在则更新了。发邮件用PHPMailer的SMTP发送邮件很方便。

check.php

<?php
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0);//通过set_time_limit(0)可以让程序无限制的执行下去
$interval=60*60*10;//单位是秒,每10小时执行一次
do{
	$run = include 'config.php';
	if(!$run) die('process abort');
	
	$url = "http://www.cnca.gov.cn/ywzl/gjgnhz/jkzl/"; 
	$ch = curl_init(); 
	curl_setopt ($ch, CURLOPT_URL, $url); 
	curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
	curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,20); 
	$content = curl_exec($ch); 
	curl_close($ch); 
	$hasAutime=strpos($content,'美国(2014年07月21日'); 
	$hasAu=strpos($content,'美国');//防止没有下载到网页误触发,方法不可取
	
	 if (!$hasAutime && $hasAu){
	  require 'mail/mySendMail.php';
	  
	  $subject="内容有更新";
	  $body="内容有更新,请访问<a href='http://www.cnca.gov.cn/ywzl/gjgnhz/jkzl/'>http://www.cnca.gov.cn/ywzl/gjgnhz/jkzl/</a>";
	  if(mySendMail("[email protected]","name",$subject,$body)){
				 echo "有更新,已发送邮件提醒";
		 } else {
				 echo "有更新,邮件发送失败";
		 }
		 die('process abort');
	 } else {
		 echo "not modified";
	 }
	
	sleep($interval);
}while(true);
?>
分類
网站

混乱的DNS

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

分類
网站

新域名

TK域名彻底不行了,搜了一下info还挺便宜,就买了个。顺便更新到了wordpress3.9。

这次用的wordpress自带的导出导入功能迁移的站点。首先导入前要把图片等资料上传到空间,若导入完成后后再上传图片,之前的相册则会找不到图片。由于我用的webp图片,需要在wp-includes/functions.php中查找image/jpeg(共两处,注意保持顺序),添加如下代码:

'webp' => 'image/webp',

然后在“设置”-“多媒体”中“中等大小”值均设为0。文章页照片就能正常显示了。然后就还是设置里设置下时间格式固定链接格式。还有插件Akismet就直接复制之前的激活码过来就行。常用的插件还有Revision Control和WP SyntaxHighlighter稍加设置即可。最后还做了下从ft.yuns.pw过来的301重定向以及更新了谷歌跟踪代码。

分類
网站

谷歌地图坐标展示

已知经纬度、精度、(速度和方向),欲将信息展示在地图上,可以用如下代码:

&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Location-Map&lt;/title&gt;
&lt;script
src="&lt;?php 
//GET值为a:latitude,n:longitude,r:accuracy,h:heading,s:speed
//判断是否含有速度方向信息,来选择加载geometry库
if(isset($_GET['s'])&&isset($_GET['h'])&&$_GET["s"]!=0){
    echo 'http://maps.googleapis.com/maps/api/js?libraries=geometry&key=yourMapApiKey&sensor=false';
} else {
    echo 'http://maps.googleapis.com/maps/api/js?key=yourMapApiKey&sensor=false';
}?&gt;"&gt;
&lt;/script&gt;
 
&lt;script&gt;
var myCenter=new google.maps.LatLng(&lt;?php echo $_GET["a"].",".$_GET["n"]; ?&gt;);
function initialize()
{
  var mapProp = {
    center: myCenter,
    zoom:16,
    mapTypeId: google.maps.MapTypeId.&lt;?php echo $_GET["t"]; ?&gt;
  };

  var map = new google.maps.Map(document.getElementById("googleMap"),mapProp);
  
  var marker=new google.maps.Marker({
  position:myCenter,
  });
  
  var myCity = new google.maps.Circle({
  center:myCenter,
  radius:&lt;?php echo $_GET["r"]; ?&gt;,
  strokeColor:"#0000FF",
  strokeOpacity:0.5,
  strokeWeight:1,
  fillColor:"#0000FF",
  fillOpacity:0.2
  });
&lt;?php
if(isset($_GET['s'])&&isset($_GET['h'])&&$_GET["s"]!=0){
    $s=$_GET['s']*10;
    $h=$_GET['h']+180;
    //使用geometry库来计算起始点
    echo 'var startLL=new google.maps.geometry.spherical.computeOffset(myCenter, '.$s.', '.$h.');';
    echo 'var myTrip=[startLL,myCenter];';
    echo 'var flightPath=new google.maps.Polyline({
  path:myTrip,
  strokeColor:"#0000FF",
  strokeOpacity:0.8,
  strokeWeight:2
  });';
    echo 'flightPath.setMap(map);';
}
?&gt;
  
  marker.setMap(map);
  myCity.setMap(map);
}

google.maps.event.addDomListener(window, 'load', initialize);
&lt;/script&gt;
&lt;/head&gt;

&lt;body&gt;

&lt;div id="googleMap" style="width:400px;height:300px;"&gt;&lt;/div&gt;
&lt;br&gt;

&lt;/body&gt;
&lt;/html&gt;

本文更新於 2014/05/19。