Ubuntu下安装PHP-FPM

以下是fabric脚本:

  1. def init_nmp():  
  2. install_nginx()  
  3. install_php()  
  4. install_phpfpm()  
  5.   
  6. def install_nginx():  
  7. sudo(“add-apt-repository ppa:nginx/stable”)  
  8. sudo(“apt-get update”)  
  9. sudo(“apt-get -y -q install nginx-full nginx-common”)  
  10.   
  11. def install_php():  
  12. # More packages upon request  
  13. sudo(“apt-get -y -q –force-yes install php5-cli php5-cgi php5-mysql”)  
  14. sudo(“apt-get -y -q –force-yes install php5-mcrypt libmcrypt mcrypt”)  
  15.   
  16. def install_phpfpm():  
  17. # TODO: use canonical php-fpm package when available  
  18. sudo(“add-apt-repository ppa:brianmercer/php”)  
  19. sudo(“apt-get update”)  
  20. sudo(“apt-get -y -q install php5-fpm”

在/etc/php5/fpm/php5-fpm.conf里将tcp修改成unix socket方式,单机情况下性能更好。

  1. listen = /var/run/php5-fpm.sock  
  2. ;listen = 127.0.0.1:9000 

Nginx里的配置:

  1. location ~ \.php$ {  
  2. try_files $uri = 404;  
  3. include /etc/nginx/fastcgi_params;  
  4. fastcgi_pass unix:/var/run/php5-fpm.sock;  
  5. fastcgi_index index.php;  
  6.   
  7. fastcgi_split_path_info ^(.+\.php)(.*)$;  
  8. include fastcgi_params;  
  9. fastcgi_intercept_errors on;  
  10. fastcgi_ignore_client_abort off;  
  11. fastcgi_connect_timeout 60;  
  12. fastcgi_send_timeout 180;  
  13. fastcgi_read_timeout 180;  
  14. fastcgi_buffer_size 128k;  
  15. fastcgi_buffers 4 256k;  
  16. fastcgi_busy_buffers_size 256k;  
  17. fastcgi_temp_file_write_size 256k;  

PHP的表单类 Zebra_Form

Zebra_Form 是一个 PHP 类用于简化表单的创建和数据验证。

示例代码:

  1. <?php  
  2. // include the Zebra_Form class  
  3. require ‘path/to/Zebra_Form.php’;  
  4.   
  5. // instantiate a Zebra_Form object  
  6. $form = new Zebra_Form(‘form’);  
  7.   
  8. // the label for the “email” field  
  9. $form->add(‘label’‘label_email’’email’‘Email’);  
  10.   
  11. // add the “email” field  
  12. // the “&” symbol is there so that $obj will be a reference to the object in PHP 4  
  13. // for PHP 5+ there is no need for it  
  14. $obj = & $form->add(‘text’’email’array(‘autocomplete’ => ‘off’));  
  15.   
  16. // set rules  
  17. $obj->set_rule(array(  
  18.     // error messages will be sent to a variable called “error”, usable in custom templates  
  19.     ‘required’  =>  array(‘error’‘Email is required!’),  
  20.     ’email’     =>  array(‘error’‘Email address seems to be invalid!’),  
  21. ));  
  22.   
  23. // “password”  
  24. $form->add(‘label’‘label_password’‘password’‘Password’);  
  25. $obj = & $form->add(‘password’‘password’array(‘autocomplete’ => ‘off’));  
  26. $obj->set_rule(array(  
  27.     ‘required’  => array(‘error’‘Password is required!’),  
  28.     ‘length’    => array(6, 10, ‘error’‘The password must have between 6 and 10 characters’),  
  29. ));  
  30.   
  31. // “remember me”  
  32. $form->add(‘checkbox’‘remember_me’‘yes’);  
  33. $form->add(‘label’‘label_remember_me_yes’‘remember_me_yes’‘Remember me’);  
  34.   
  35. // “submit”  
  36. $form->add(‘submit’‘btnsubmit’‘Submit’);  
  37.   
  38. // validate the form  
  39. if ($form->validate()) {  
  40.     // do stuff here  
  41. }  
  42. // auto generate output, labels above form elements  
  43. $form->render();  
  44. ?>