让Samba支持软连接

        家里的系统由centos6换成linuxmint(实在是好用才换)了, 重新配置好samba后,发现里面的一个软链接到pt下载目录的目录不能访问。

        测试半天,chcon, chmod, chown,不行,仔细一想,应该是samba下软链接支持问题了,google后,解决,方案如下, 在smb.conf增加以下三行

阅读全文 >>

samba部署和优化

        samba 服务可以实现 windows 和 linux 的文件共享,配置不难,使用也非常简单。

1.samba 配置文件 smb.conf

        安装系统的时候大多会默认安装 samba ,如果没有安装,在 centos 上只需要运行

1
[root@192 ~]# yum install -y samba samba-client

阅读全文 >>

常见apache php_admin_value php_admin_flag 设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
php_admin_value open_basedir /data/123:/tmp/
php_admin_flag engine on
php_admin_flag log_errors on
php_admin_value max_execution_time 180
php_admin_value upload_tmp_dir /mp/
php_admin_value include_path /data/123/include
php_admin_flag short_open_tag on
php_admin_value memory_limit 8388608
php_admin_value error_reporting 15
php_admin_flag display_errors on
php_admin_flag track_errors off
php_admin_value error_log /home/logs/php_error.log
php_admin_flag magic_quotes_gpc on
php_admin_flag track_vars on
php_admin_value auto_prepend_file /data/123/php/prepend.php
php_admin_value auto_append_file /data/123/php/append.php

阅读全文 >>

php的错误日志级别 error_report

1
2
3
4
5
6
7
8
9
10
11
12
13
14
; E_ALL 所有错误和警告(除E_STRICT外)
; E_ERROR 致命的错误。脚本的执行被暂停。
; E_RECOVERABLE_ERROR 大多数的致命错误。
; E_WARNING 非致命的运行时错误,只是警告,脚本的执行不会停止。
; E_PARSE 编译时解析错误,解析错误应该只由分析器生成。
; E_NOTICE 脚本运行时产生的提醒(往往是我们写的脚本里面的一些bug,比如某个变量没有定义),这个错误不会导致任务中断。
; E_STRICT 脚本运行时产生的提醒信息,会包含一些php抛出的让我们要如何修改的建议信息。
; E_CORE_ERROR 在php启动后发生的致命性错误
; E_CORE_WARNING 在php启动后发生的非致命性错误,也就是警告信息
; E_COMPILE_ERROR php编译时产生的致命性错误
; E_COMPILE_WARNING php编译时产生的警告信息
; E_USER_ERROR 用户生成的错误
; E_USER_WARNING 用户生成的警告
; E_USER_NOTICE 用户生成的提醒

阅读全文 >>

php 扩展模块如何安装

        php 和 apapche 类似,核心文件为 /usr/local/php/bin/php ,针对 apache 的是 /usr/local/apache2/modules/libphp5.so 模块。这两个文件是核心,在编译 php 的时候会提前让它支持一些功能,比如支持 mysql,这个功能其实是 php 的一个模块,只不过这个模块是直接和 php 或者 libphp5.so 文件编译在一起的。当我们编译完成 php 后,发现还需要让 php 支持另外的模块,这时候可以重新编译 php ,加上配置参数,或者直接编译出一个独立的模块文件。然后让 php去调用它。下面以编译 memcache 为例;

阅读全文 >>

CGI、FastCGI与php-fpm

        这几个概念是在学习lamp、lnmp架构中我们遇到的。好多同学对这几个概念一直不明白。下面内容希望能帮助到到家,其中一些内容参考网上的文章。

        在web开发领域中有个大概念大家必须要搞清楚,那就是静态和动态。静态就是一些诸如html、图片、js、css等请求元素,它们的特点是不需要和其他资源(比如数据库)打交道,可以直接由web server(httpd、nginx等)处理。如下图:

        而动态则是需要和数据库等资源打交道的请求,在lamp/lnmp架构中,需要一个中间件(PHP解释器)去解析php代码,然后和mysql数据库打交道。如图:

        当Web Server收到 index.php 这个请求后,会启动对应的 CGI 程序,这里就是PHP的解析器。接下来PHP解析器会解析php.ini文件,初始化执行环境,然后处理请求,再以规定CGI规定的格式返回处理后的结果,退出进程,Web server再把结果返回给浏览器。这就是一个完整的动态PHP Web访问流程,接下来再引出这些概念,就好理解多了。

        再来解释几个概念:

  • CGI:是 Web Server 与 Web Application 之间数据交换的一种协议。

  • FastCGI:同 CGI,是一种通信协议,但比 CGI 在效率上做了一些优化。同样,SCGI 协议与 FastCGI 类似。

  • PHP-CGI:是 PHP (Web Application)对 Web Server 提供的 CGI 协议的接口程序。

  • PHP-FPM:是 PHP(Web Application)对 Web Server 提供的 FastCGI 协议的接口程序,额外还提供了相对智能一些任务管理。

        WEB 中,Web Server 一般指Apache、Nginx、IIS、Lighttpd、Tomcat等服务器,Web Application 一般指PHP、Java、Asp.net等应用程序。

        在这里还要了解另外一种方式 —— Apache的Module方式。 lamp架构中,php是以一个模块(libphp5.so)的方式被httpd调用的,这个模块是通过sapi把数据交给了php的解释器。

        SAPI提供了一个和外部通信的接口,有点类似于socket,使得PHP可以和其他应用进行交互数据(apache,nginx等)。php默认提供了很多种SAPI,常见的提供给apache和nginx的php5_module、CGI、FastCGI,给IIS的ISAPI,以及Shell的CLI。

        最后再来说一说,FastCGI为什么比CGI优秀。

        不管是CGI还是FastCGI都是专门用来和WEB服务器打交道的,web服务器收到用户请求,就会把请求提交给cgi/fastcgi程序(如php-cgi),cgi/fastcgi程序根据请求提交的参数作应处理(解析php),然后输出标准的html语句,返回给web服服务器,WEB服务器再返回给客户端,这就是普通cgi/fastcgi的工作原理。

        cgi和fastcgi不同在于,cgi需要在每一次WEB服务器把请求交给它时都需要启动一次进程,然后处理结束后还要关闭进程。这样当并发量很大时,就会造成服务器资源耗费严重。而fastcgi则为常驻进程,也就是说进程启动后会一直在线,不用频繁开启和关闭。另外fastcgi还支持分布式,也就是说可以支持在web服务器外的其他服务器上运行,通过tcp传输数据。

通过http上传大文件超时的问题

        架构是 LAMP , 上传文件的操作,并没有连接mysql,但是却使用了php资源,所以修改设置,不仅要设置apache还要设置php.ini

  1. apache httpd.conf 的设置
  • Timeout 600 这个可以设置成 3600, 单位是s
  1. php.ini 相关的参数
  • file_uploads = on ; 默认为开
  • upload_max_filesize = 1024M ; 上传最大值
  • post_max_size = 1024M ; 通过表单POST给PHP的所能接收的最大值

阅读全文 >>

LAMP安装php

        为什么把 php 放到最后来安装,是有原因的,因为在编译 php 的时候,有指定 mysql 以及 apache 的路径,如果不先安装好 mysql 和 apache 就没有办法安装 php 。而 apache 和 mysql 的安装顺序就无所谓了。
        php官方下载地址

阅读全文 >>