热门搜索 :
宠物领养
您的当前位置:首页正文

配置最新的PHP加MYSQL服务器

2023-11-29 来源:微宠网

通过一个小时的研究和设置.实现了最新的 PHP 5.0 + MYSQL 5.0 + WIN2003.个人认为还是有必要写个教程出来.因为很多方面和老版本的不尽相同.说实话自己也是查阅了很多官方文档才解决了很多怪异问题.

=========================

相关软件均可以在 WWW.SKYCN.NET 下载.

MYSQL 5.0 FOR WINDOWS PHP 5.0 FOR WINDOWS PHPMYADMINWINDOWS SERVER 2003

=========================

首先安装 MYSQL .本来以为新版本的安装界面应该会花哨点.但是仍然只看到老土的海豚.除了安装时间比 4.0 长.当然咯.因为 5.0 比 4.0 体积大很多.

推荐安装在独立的 NTFS 分区上.比如我服务器的 F盘.只放服务器软件.路径为: F:MYSQL

然后进入 F:MYSQLBIN 鼠标双点 winmysqladmin.exe首次运行会提示输入超级用户和密码.就输入 root 密码 root注意啊.如果是对外服务器请设置超级复杂.比如 Wjwsfjn29szjwh~mysql翻译过来就是: 我叫魏舒芬.今年29岁至今未婚.

到这里.MYSQL就安装完毕了.如果不明白请参看深空同学的相关文章.

=========================

下面安装 PHP 5.0 其实没什么安装不安装的.解压缩文件.推荐放到路径为: F:PHP

到这里就应该进入关键步骤了.首先复制 PHP 目录下的 Php.ini-dist 到 C:Windows 并将文件名修改成为 Php.ini

COPY F:PHPPhp.ini-dist C:WindowsRen Php.ini-dist Php.ini

如果是 WINDOWS 2000 就是: C:WINNT如果是 WIN9X / 2003 就是: C:Windows

然后复制 PHP 目录下 DLLS 目录里的所有文件到 SYSTEM32 目录.

COPY F:PHPdlls*.* C:WindowsSystem32

如果是 WINDOWS 2000 就是: C:WINNTSystem32如果是 WIN9X / 2003 就是: C:WindowsSystem32

继续.复制PHP目录下 php4ts.dll 文件到 System32 目录里.

COPY F:PHPphp4ts.dll C:WindowsSystem32

=========================

到这里复制工作全部完成.下面修改 C:WindowsPhp.ini 文件.

请注意.5.0的版本修改与4.0并不完全相同.需要注意的如下.

查找 extension_dir 字串.修改为你 PHP 目录里 extensions 的路径.

; Directory in which the loadable extensions (modules) reside.extension_dir = F:PHPextensions

相关官方技术资料:

Edit your php.ini file:

You will need to change the 'extension_dir' setting topoint to your php-install-dir, or where you have placedyour 'php_*.dll' files. ex: c:php

If you are using OmniHTTPd, do not follow the next step.Set the 'doc_root' to point to your webserversdocument_root. ex: c:apachehtdocs or c:webroot

Choose which extensions you would like to load when PHPstarts, noting that several extensions are already builtinto the Windows release, see the section aboutWindows extensions for details of the built-in extensions.You can uncomment the: 'extension=php_*.dll' linesin php.ini to load these extensions.

Note that on a new installation it is advisable to first getPHP working and tested without any extensions before enablingthem in php.ini.

On PWS and IIS, you can set the browscap.inito point to: 'c:windowssysteminetsrvrowscap.ini' onWindows 9x/Me and 'c:winntsystem32inetsrvrowscap.ini'on NT/2000/XP Server.

More information on the capabilities of browscap can be found here:

www.php.com/manual/en/function.get-browser.php

Note that the mibs directory supplied with the Windows distributioncontains support files for SNMP. This directory should be moved toDRIVE:usrmibs (DRIVE being the drive where PHP is installed.)

然后与 PHP 4.0 不同的是.需要修改 Php.ini 文件里的如下内容:查找 cgi.force_redirect 字串.默认值为1.将其修改为0.并取消前面的;号.

即:

; cgi.force_redirect is necessary to provide security running PHP as a CGI under; most web servers. Left undefined, PHP turns this on by default. You can; turn it off here AT YOUR OWN RISK; **You CAN safely turn this off for IIS, in fact, you MUST.**cgi.force_redirect = 0

切记如上修改的地方.否则PHP 5.0是无法运行的.会有如下提示.

Security Alert! The PHP CGI cannot be accessed directly.

相关官方技术资料:

!NOTE!: Since 4.1.2, the php.ini setting cgi.force_redirect defaults to '1'which effectively prevents the cgi from working within IIS. You need to setup at least a minimal php.ini file with the following directive:

cgi.force_redirect = 0

If it doesn't work immidiately, make sure you have the php.ini file in theright place (%SYSTEMROOT%php.ini).

接下来修改 Php.ini 文件关于 MYSQL 5.0 的设置.

查找 [MySQL] 字段内的内容.修改如下.

mysql.default_port = 3306 // 这里是MYSQL的端口.

mysql.default_host = localhost// 这里是本地主机.

mysql.default_user = root// 这里是用户

mysql.default_password = Wjwsfjn29szjwh~mysql// 这里是密码

修改到这里就可以让 Php 与 MYSQL 关联了.最后启动 PHP 对 MYSQL 模块支持.

查找 extension=php_mysql.dll 字串.删除掉前面的 ; 号

extension=php_mysql.dll

请注意.如果不启动 PHP 对 MYSQL 模块支持.将无法使 PHPMYADMIN 正常工作.将提示:

cannot load MySQL extension, please check PHP Configuration无法装入 MySQL 扩展,请检查 PHP 的配置。

相关官方技术资料:

To connect to a MySQL server, PHP needs a set of MySQL functions called "MySQL extension". This extension may be part of the PHP distribution (compiled-in), otherwise it needs to be loaded dynamically. Its name is probably mysql.so or php_mysql.dll. phpMyAdmin tried to load the extension but failed.

=========================

到这里应该就没有很大问题了.如果有配置基础的朋友应该完全可以理解了.本人在实际配置的时候也遇到了很多问题.最后都是耐心查询官方文档得到了解决.

小编还为您整理了以下内容,可能对您也有帮助:

php与mysql如何配置啊?

windows下用浏览器查看php的配置文件

[root@localhost ~]# cd /data/www/    //进入网站根目录

[root@localhost www]# vi phpinfo.php    

在浏览器输入网站,以下为php的配置文件。

技术分享

技术分享

2.配置disable_function

[root@localhost www]# vi /usr/local/php/etc/php.ini 

disable_functions = eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close

 

有时候在配置php时会出现以下警告,该警告是提示我们没有定义时区,

PHP Warning:  Unknown: It is not safe to rely on the system‘s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Asia/Chongqing‘ for ‘CST/8.0/no DST‘ instead in Unknown on line 0

解决方法入下:

[root@localhost www]# vi /usr/local/php/etc/php.ini 

; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = ‘Asia/Chongqing‘

将date.timezone的注释取消,并在后面添加时区。

3.如何在浏览器上输出php文件的错误信息,此种状况必须为临时生效!

[root@localhost ~]# vi /usr/local/php/etc/php.ini 

在配置文件内搜索display_errors 并将其改为On:

********************************

; Default Value: On
; Development Value: On
; Production Value: Off
; http://php.net/display-errors
display_errors = On

[root@localhost ~]# vi /data/www/1.php  //编辑错误的php文件

<?php

 ech "hello word"   

?>

在浏览器上按以上输入则会出现以下结果:

技术分享

技术分享

除了以上在php配置文件设置外我们还可以在apache的虚拟主机配置文件设置:

首先将php的配置文件中的display_errors 选项给关闭,接着按以下操作

[root@localhost ~]# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf 

在虚拟主机配置文件内添加以下内容

php_flag   display_errors         on

 php_value error_reporting       2039

子浏览器上输入则还会出现错误的提示。

以上可以看出在浏览器上会输出php文件错误信息,但在生产环境中是不会使用此功能的会在服务器上生成错误日志,我们根据错误日志调试。

 

4.配置php错误日志

[root@localhost ~]# vi /usr/local/php/etc/php.ini 

display_error=off  //将错误提示在浏览器上的选项给关闭

log_errors=on  //将错误日志选项打开

;error_log = php_errors.log

; Log errors to syslog (Event Log on NT, not valid in Windows 95).

;error_log = syslog  //在此段字符后加上错误日志的绝对路径

error_log = /usr/local/php/logs/error.log

; http://php.net/error-reporting

error_reporting = E_ALL | E_STRICT    //日志级别

关于日志级别的解释:

; 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      用户生成的提醒

 

[root@localhost ~]# mkdir /usr/local/php/logs
[root@localhost ~]# touch /usr/local/php/logs/error.log

[root@localhost ~]# chmod 777 /usr/local/php/logs/

[root@localhost ~]# chmod 777 /usr/local/php/logs/error.log 

[root@localhost ~]# curl -x127.0.0.1:80 www.123.com/1.php
[root@localhost ~]# curl -x127.0.0.1:80 www.123.com/1.php -I
HTTP/1.0 500 Internal Server Error
Date: Tue, 12 May 2015 21:06:59 GMT
Server: Apache/2.2.16 (Unix) DAV/2 PHP/5.3.28
X-Powered-By: PHP/5.3.28
Connection: close
Content-Type: text/html
[root@localhost ~]# cat /usr/local/php/logs/error.log 
[12-May-2015 02:28:30 Asia/Chongqing] PHP Parse error:  syntax error, unexpected T_STRING, expecting ‘,‘ or ‘;‘ in /data/www/1.php on line 3
[12-May-2015 05:27:34 Asia/Chongqing] PHP Parse error:  syntax error, unexpected T_STRING, expecting ‘,‘ or ‘;‘ in /data/www/1.php on line 3
[12-May-2015 05:27:51 Asia/Chongqing] PHP Parse error:  syntax error, unexpected T_STRING, expecting ‘,‘ or ‘;‘ in /data/www/1.php on line 3

5.配置open_basedir   //防止由于网站的漏洞导致入侵者进入到除了网站的根目录以外的目录

php.ini: open_basedir = /dir1/:/dir2

httpd.conf: php_admin_value open_basedir "/dir1/:/dir2/"

 [root@localhost ~]# vi /usr/local/php/etc/php.ini   

; or per-virtualhost web server configuration file. This directive is
; *NOT* affected by whether Safe Mode is turned On or Off.
; http://php.net/open-basedir
open_basedir = /data/www2/:/tmp/  // 此为错误的路径

由于在配置文件上写入的是错误的日志导致curl下状态码为500

[root@localhost ~]# curl -x127.0.0.1:80 www.123.com -I
HTTP/1.0 500 Internal Server Error
Date: Tue, 12 May 2015 21:21:57 GMT
Server: Apache/2.2.16 (Unix) DAV/2 PHP/5.3.28
X-Powered-By: PHP/5.3.28
Connection: close
Content-Type: text/html

[root@localhost ~]# cat /usr/local/php/logs/error.log   //以下为由于open_basedir的配置错误输出的错误日志

[13-May-2015 05:16:25 Asia/Chongqing] PHP Warning:  Unknown: open_basedir restriction in effect. File(/data/www/1.php) is not within the allowed path(s): (/data/www2/:/tmp/) in Unknown on line 0
[13-May-2015 05:16:25 Asia/Chongqing] PHP Warning:  Unknown: failed to open stream: Operation not permitted in Unknown on line 0
[13-May-2015 05:16:25 Asia/Chongqing] PHP Fatal error:  Unknown: Failed opening required ‘/data/www/1.php‘ (include_path=‘.:/usr/local/php/lib/php‘) in Unknown on line 0

[root@localhost ~]# !vi   //更改为正确的配置
vi /usr/local/php/etc/php.ini 
[root@localhost ~]# curl -x127.0.0.1:80 www.123.com -I
HTTP/1.1 301 Moved Permanently
Date: Tue, 12 May 2015 21:23:22 GMT
Server: Apache/2.2.16 (Unix) DAV/2 PHP/5.3.28
X-Powered-By: PHP/5.3.28
location: forum.php
Content-Type: text/html

若一台服务器上有多个站点可以根据虚拟主机配置文件进行配置open_basedir

[root@localhost ~]# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf 

<VirtualHost *:80>
       DocumentRoot "/tmp/tmp"
       ServerName tmp.com
php_admin_value open_basedir "/tmp/tmp"

</VirtualHost>


<VirtualHost *:80>
    DocumentRoot "/data/www"
    ServerName www.123.com
    ServerAlias www.aaa.com
    ServerAlias www.bbb.com
php_admin_value open_basedir "/data/www/:/tmp/"

6.安装php的扩展模块(memcache)

 [root@localhost ~]# /usr/local/php/bin/php -m   //显示php加载的静态模块

[PHP Modules]

bz2

Core

ctype

date

dom

ereg

exif

fileinfo

*******

 #  wget http://www.lishiming.net/data/attachment/forum/memcache-2.2.3.tgz

 # tar zxvf memcache-2.2.3.tgz

 # cd memcache-2.2.3

 # /usr/local/php/bin/phpize  //有时会因为缺少autoconf.noarch源而报错,此步骤是为了生成config的文件

Configuring for:

PHP Api Version:         20090626

Zend Module Api No:      20090626

Zend Extension Api No:   220090626

 # ./configure --with-php-config=/usr/local/php/bin/php-config

 # make

 # make install

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/     //会自动的将扩展模块放到目录下

[root@localhost memcache-2.2.3]# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/   //查看是否放到此目录 
memcache.so

[root@localhost memcache-2.2.3]# vi /usr/local/php/etc/php.ini 

在配置文件的最后添加

 extension = memcache.so

[root@localhost memcache-2.2.3]# /usr/local/php/bin/php -m  //说明已加载
[PHP Modules]
bz2
Core
ctype

*******

mcrypt

memcache

mysql

******

上面可以看出php已加载memcache的模块,但如果extension_dir 路径的更改会影响到模块的加载,解决方法如下

[root@localhost memcache-2.2.3]# /usr/local/php/bin/php -i |grep -i extension
*************
extension_dir => /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626 => /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626

通过上面可以看出extension_dir 在哪个目录下,若我们更改了路径则可以在php.ini 中写绝对路径,也可以根据上面的查询找到extension_dir的指定目录并将memcache.so 放到该目录下。

若在更改php.ini文件时将memcache的路径写错出现的错误日志:

[root@localhost memcache-2.2.3]# tail /usr/local/php/logs/error.log

[13-May-2015 06:23:57 Asia/Chongqing] PHP Warning:  PHP Startup: Unable to load dynamic library ‘/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/1memcache.so‘ - /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/1memcache.so: cannot open shared object file: No such file or directory in Unknown on line 0

[13-May-2015 06:24:45 Asia/Chongqing] PHP Warning:  PHP Startup: Unable to load dynamic library ‘/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/1memcache.so‘ - /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/1memcache.so: cannot open shared object file: No such file or directory in Unknown on line 0

二. mysql配置(部分常用的参数)

 [mysqld]                        

 socket = /tmp/mysql.sock    

 # 为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(Linux下默认是/var/lib/mysql/mysql.sock文件)

 

port             = 3306      

 # 指定MsSQL侦听的端口

skip-name-resolve  

 #禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项, 则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求.

key_buffer       = 384M      

 # key_buffer是用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写)。索引被所有的线程共享,key_buffer的大小视内存大小而定。

 

table_open_cache      = 512      

# MySQL每打开一个表,都会读入一些数据到table_open_cache缓存中,当MySQL在这个缓存中找不到相应信息时,才会去磁盘上读取。默认值64, 假定系统有200个并发连接,则需将此参数设置为200*N(N为每个连接所需的文件描述符数目);当把table_open_cache设置为很大时,如果系统处理不了那么多文件描述符,那么就会出现客户端失效,连接不上.

 

max_allowed_packet = 4M  

 # 接受的数据包大小;增加该变量的值十分安全,这是因为仅当需要时才会分配额外内存。例如,仅当你发出长查询或MySQLd必须返回大的结果行时MySQLd才会分配更多内存。 该变量之所以取较小默认值是一种预防措施,以捕获客户端和服务器之间的错误信息包,并确保不会因偶然使用大的信息包而导致内存溢出。

 

sort_buffer_size = 2M        

 # MySQL执行排序使用的缓冲大小。如果想要增加ORDER BY的速度,首先看是否可以让MySQL使用索引而不是额外的排序阶段。如果不能,可以尝试增加sort_buffer_size变量的大小

 

read_buffer_size = 2M        

 # 读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL会为它分配一段内存缓冲区。 如果对表的顺序扫描请求非常频繁,并且你认为频繁扫描进行得太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能.

 

join_buffer_size = 2M  

 # 联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享

 

query_cache_size = 32M      

# 指定MySQL查询结果缓冲区的大小

 

read_rnd_buffer_size    = 2M

# 随机读缓冲区大小。当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区。进行排序查询时,MySQL会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要排序大量数据,可适当调高该值。但MySQL会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大

 

myisam_sort_buffer_size =64M

# MyISAM表发生变化时重新排序所需的缓冲

 

thread_concurrency      = 8

# 最大并发线程数,取值为服务器逻辑CPU数量×2

 

thread_cache            = 8

#该值表示可以重新利用保存在缓存中线程的数量,当断开连接时若缓存中还有空间,那么客户端的线程将被放到缓存中,如果线程重新被请求,那么请求将从缓存中读取,若果缓存中是空的或者是新的请求,那么线程将被重新创建。设置规律为:1G内存设置为8,2G内存设置为16,4G以上设置为64

 

max_connections = 1000

#MySQL的最大连接数,如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,介于MySQL会为每个连接提供连接缓冲区,就会开销越多的内存,所以要适当调整该值,不能盲目提高设值。可以过‘conn%‘通配符查看当前状态的连接数量,以定夺该值的大小。

 

max_connect_errors = 6000  

 # 对于同一主机,如果有超出该参数值个数的中断错误连接,则该主机将被禁止连接。如需对该主机进行解禁,执行:FLUSH HOST。

 

open_files_limit = 65535

# MySQL打开的文件描述符限制,默认最小1024

 

skip-locking                

 # 避免MySQL的外部锁定,减少出错几率增强稳定性。

wait_timeout  = 8  

 # 表示空闲的连接超时时间,默认是28800s,这个参数是和interactive_timeout一起使用的,也就是说要想让wait_timeout 生效,必须同时设置interactive_timeout

 

interactive_timeout = 8

 

long_query_time = 1  

 #慢查询日志的超时时间

 

log_slow_queries = /path/to/slow_queries  

 # 慢查询日志路径,必须配合上面的参数一同使用

 

php、mysql的配置

标签:php   mysql配置   

php与mysql如何配置啊?

windows下用浏览器查看php的配置文件

[root@localhost ~]# cd /data/www/    //进入网站根目录

[root@localhost www]# vi phpinfo.php    

在浏览器输入网站,以下为php的配置文件。

技术分享

技术分享

2.配置disable_function

[root@localhost www]# vi /usr/local/php/etc/php.ini 

disable_functions = eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close

 

有时候在配置php时会出现以下警告,该警告是提示我们没有定义时区,

PHP Warning:  Unknown: It is not safe to rely on the system‘s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Asia/Chongqing‘ for ‘CST/8.0/no DST‘ instead in Unknown on line 0

解决方法入下:

[root@localhost www]# vi /usr/local/php/etc/php.ini 

; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = ‘Asia/Chongqing‘

将date.timezone的注释取消,并在后面添加时区。

3.如何在浏览器上输出php文件的错误信息,此种状况必须为临时生效!

[root@localhost ~]# vi /usr/local/php/etc/php.ini 

在配置文件内搜索display_errors 并将其改为On:

********************************

; Default Value: On
; Development Value: On
; Production Value: Off
; http://php.net/display-errors
display_errors = On

[root@localhost ~]# vi /data/www/1.php  //编辑错误的php文件

<?php

 ech "hello word"   

?>

在浏览器上按以上输入则会出现以下结果:

技术分享

技术分享

除了以上在php配置文件设置外我们还可以在apache的虚拟主机配置文件设置:

首先将php的配置文件中的display_errors 选项给关闭,接着按以下操作

[root@localhost ~]# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf 

在虚拟主机配置文件内添加以下内容

php_flag   display_errors         on

 php_value error_reporting       2039

子浏览器上输入则还会出现错误的提示。

以上可以看出在浏览器上会输出php文件错误信息,但在生产环境中是不会使用此功能的会在服务器上生成错误日志,我们根据错误日志调试。

 

4.配置php错误日志

[root@localhost ~]# vi /usr/local/php/etc/php.ini 

display_error=off  //将错误提示在浏览器上的选项给关闭

log_errors=on  //将错误日志选项打开

;error_log = php_errors.log

; Log errors to syslog (Event Log on NT, not valid in Windows 95).

;error_log = syslog  //在此段字符后加上错误日志的绝对路径

error_log = /usr/local/php/logs/error.log

; http://php.net/error-reporting

error_reporting = E_ALL | E_STRICT    //日志级别

关于日志级别的解释:

; 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      用户生成的提醒

 

[root@localhost ~]# mkdir /usr/local/php/logs
[root@localhost ~]# touch /usr/local/php/logs/error.log

[root@localhost ~]# chmod 777 /usr/local/php/logs/

[root@localhost ~]# chmod 777 /usr/local/php/logs/error.log 

[root@localhost ~]# curl -x127.0.0.1:80 www.123.com/1.php
[root@localhost ~]# curl -x127.0.0.1:80 www.123.com/1.php -I
HTTP/1.0 500 Internal Server Error
Date: Tue, 12 May 2015 21:06:59 GMT
Server: Apache/2.2.16 (Unix) DAV/2 PHP/5.3.28
X-Powered-By: PHP/5.3.28
Connection: close
Content-Type: text/html
[root@localhost ~]# cat /usr/local/php/logs/error.log 
[12-May-2015 02:28:30 Asia/Chongqing] PHP Parse error:  syntax error, unexpected T_STRING, expecting ‘,‘ or ‘;‘ in /data/www/1.php on line 3
[12-May-2015 05:27:34 Asia/Chongqing] PHP Parse error:  syntax error, unexpected T_STRING, expecting ‘,‘ or ‘;‘ in /data/www/1.php on line 3
[12-May-2015 05:27:51 Asia/Chongqing] PHP Parse error:  syntax error, unexpected T_STRING, expecting ‘,‘ or ‘;‘ in /data/www/1.php on line 3

5.配置open_basedir   //防止由于网站的漏洞导致入侵者进入到除了网站的根目录以外的目录

php.ini: open_basedir = /dir1/:/dir2

httpd.conf: php_admin_value open_basedir "/dir1/:/dir2/"

 [root@localhost ~]# vi /usr/local/php/etc/php.ini   

; or per-virtualhost web server configuration file. This directive is
; *NOT* affected by whether Safe Mode is turned On or Off.
; http://php.net/open-basedir
open_basedir = /data/www2/:/tmp/  // 此为错误的路径

由于在配置文件上写入的是错误的日志导致curl下状态码为500

[root@localhost ~]# curl -x127.0.0.1:80 www.123.com -I
HTTP/1.0 500 Internal Server Error
Date: Tue, 12 May 2015 21:21:57 GMT
Server: Apache/2.2.16 (Unix) DAV/2 PHP/5.3.28
X-Powered-By: PHP/5.3.28
Connection: close
Content-Type: text/html

[root@localhost ~]# cat /usr/local/php/logs/error.log   //以下为由于open_basedir的配置错误输出的错误日志

[13-May-2015 05:16:25 Asia/Chongqing] PHP Warning:  Unknown: open_basedir restriction in effect. File(/data/www/1.php) is not within the allowed path(s): (/data/www2/:/tmp/) in Unknown on line 0
[13-May-2015 05:16:25 Asia/Chongqing] PHP Warning:  Unknown: failed to open stream: Operation not permitted in Unknown on line 0
[13-May-2015 05:16:25 Asia/Chongqing] PHP Fatal error:  Unknown: Failed opening required ‘/data/www/1.php‘ (include_path=‘.:/usr/local/php/lib/php‘) in Unknown on line 0

[root@localhost ~]# !vi   //更改为正确的配置
vi /usr/local/php/etc/php.ini 
[root@localhost ~]# curl -x127.0.0.1:80 www.123.com -I
HTTP/1.1 301 Moved Permanently
Date: Tue, 12 May 2015 21:23:22 GMT
Server: Apache/2.2.16 (Unix) DAV/2 PHP/5.3.28
X-Powered-By: PHP/5.3.28
location: forum.php
Content-Type: text/html

若一台服务器上有多个站点可以根据虚拟主机配置文件进行配置open_basedir

[root@localhost ~]# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf 

<VirtualHost *:80>
       DocumentRoot "/tmp/tmp"
       ServerName tmp.com
php_admin_value open_basedir "/tmp/tmp"

</VirtualHost>


<VirtualHost *:80>
    DocumentRoot "/data/www"
    ServerName www.123.com
    ServerAlias www.aaa.com
    ServerAlias www.bbb.com
php_admin_value open_basedir "/data/www/:/tmp/"

6.安装php的扩展模块(memcache)

 [root@localhost ~]# /usr/local/php/bin/php -m   //显示php加载的静态模块

[PHP Modules]

bz2

Core

ctype

date

dom

ereg

exif

fileinfo

*******

 #  wget http://www.lishiming.net/data/attachment/forum/memcache-2.2.3.tgz

 # tar zxvf memcache-2.2.3.tgz

 # cd memcache-2.2.3

 # /usr/local/php/bin/phpize  //有时会因为缺少autoconf.noarch源而报错,此步骤是为了生成config的文件

Configuring for:

PHP Api Version:         20090626

Zend Module Api No:      20090626

Zend Extension Api No:   220090626

 # ./configure --with-php-config=/usr/local/php/bin/php-config

 # make

 # make install

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/     //会自动的将扩展模块放到目录下

[root@localhost memcache-2.2.3]# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/   //查看是否放到此目录 
memcache.so

[root@localhost memcache-2.2.3]# vi /usr/local/php/etc/php.ini 

在配置文件的最后添加

 extension = memcache.so

[root@localhost memcache-2.2.3]# /usr/local/php/bin/php -m  //说明已加载
[PHP Modules]
bz2
Core
ctype

*******

mcrypt

memcache

mysql

******

上面可以看出php已加载memcache的模块,但如果extension_dir 路径的更改会影响到模块的加载,解决方法如下

[root@localhost memcache-2.2.3]# /usr/local/php/bin/php -i |grep -i extension
*************
extension_dir => /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626 => /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626

通过上面可以看出extension_dir 在哪个目录下,若我们更改了路径则可以在php.ini 中写绝对路径,也可以根据上面的查询找到extension_dir的指定目录并将memcache.so 放到该目录下。

若在更改php.ini文件时将memcache的路径写错出现的错误日志:

[root@localhost memcache-2.2.3]# tail /usr/local/php/logs/error.log

[13-May-2015 06:23:57 Asia/Chongqing] PHP Warning:  PHP Startup: Unable to load dynamic library ‘/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/1memcache.so‘ - /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/1memcache.so: cannot open shared object file: No such file or directory in Unknown on line 0

[13-May-2015 06:24:45 Asia/Chongqing] PHP Warning:  PHP Startup: Unable to load dynamic library ‘/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/1memcache.so‘ - /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/1memcache.so: cannot open shared object file: No such file or directory in Unknown on line 0

二. mysql配置(部分常用的参数)

 [mysqld]                        

 socket = /tmp/mysql.sock    

 # 为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(Linux下默认是/var/lib/mysql/mysql.sock文件)

 

port             = 3306      

 # 指定MsSQL侦听的端口

skip-name-resolve  

 #禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项, 则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求.

key_buffer       = 384M      

 # key_buffer是用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写)。索引被所有的线程共享,key_buffer的大小视内存大小而定。

 

table_open_cache      = 512      

# MySQL每打开一个表,都会读入一些数据到table_open_cache缓存中,当MySQL在这个缓存中找不到相应信息时,才会去磁盘上读取。默认值64, 假定系统有200个并发连接,则需将此参数设置为200*N(N为每个连接所需的文件描述符数目);当把table_open_cache设置为很大时,如果系统处理不了那么多文件描述符,那么就会出现客户端失效,连接不上.

 

max_allowed_packet = 4M  

 # 接受的数据包大小;增加该变量的值十分安全,这是因为仅当需要时才会分配额外内存。例如,仅当你发出长查询或MySQLd必须返回大的结果行时MySQLd才会分配更多内存。 该变量之所以取较小默认值是一种预防措施,以捕获客户端和服务器之间的错误信息包,并确保不会因偶然使用大的信息包而导致内存溢出。

 

sort_buffer_size = 2M        

 # MySQL执行排序使用的缓冲大小。如果想要增加ORDER BY的速度,首先看是否可以让MySQL使用索引而不是额外的排序阶段。如果不能,可以尝试增加sort_buffer_size变量的大小

 

read_buffer_size = 2M        

 # 读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL会为它分配一段内存缓冲区。 如果对表的顺序扫描请求非常频繁,并且你认为频繁扫描进行得太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能.

 

join_buffer_size = 2M  

 # 联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享

 

query_cache_size = 32M      

# 指定MySQL查询结果缓冲区的大小

 

read_rnd_buffer_size    = 2M

# 随机读缓冲区大小。当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区。进行排序查询时,MySQL会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要排序大量数据,可适当调高该值。但MySQL会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大

 

myisam_sort_buffer_size =64M

# MyISAM表发生变化时重新排序所需的缓冲

 

thread_concurrency      = 8

# 最大并发线程数,取值为服务器逻辑CPU数量×2

 

thread_cache            = 8

#该值表示可以重新利用保存在缓存中线程的数量,当断开连接时若缓存中还有空间,那么客户端的线程将被放到缓存中,如果线程重新被请求,那么请求将从缓存中读取,若果缓存中是空的或者是新的请求,那么线程将被重新创建。设置规律为:1G内存设置为8,2G内存设置为16,4G以上设置为64

 

max_connections = 1000

#MySQL的最大连接数,如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,介于MySQL会为每个连接提供连接缓冲区,就会开销越多的内存,所以要适当调整该值,不能盲目提高设值。可以过‘conn%‘通配符查看当前状态的连接数量,以定夺该值的大小。

 

max_connect_errors = 6000  

 # 对于同一主机,如果有超出该参数值个数的中断错误连接,则该主机将被禁止连接。如需对该主机进行解禁,执行:FLUSH HOST。

 

open_files_limit = 65535

# MySQL打开的文件描述符限制,默认最小1024

 

skip-locking                

 # 避免MySQL的外部锁定,减少出错几率增强稳定性。

wait_timeout  = 8  

 # 表示空闲的连接超时时间,默认是28800s,这个参数是和interactive_timeout一起使用的,也就是说要想让wait_timeout 生效,必须同时设置interactive_timeout

 

interactive_timeout = 8

 

long_query_time = 1  

 #慢查询日志的超时时间

 

log_slow_queries = /path/to/slow_queries  

 # 慢查询日志路径,必须配合上面的参数一同使用

 

php、mysql的配置

标签:php   mysql配置   

如何在一台windows的服务器里安装配置PHP+MYSQL环境

经常遇到有客户使用自己内网的服务器,所以需要安装php运行的环境和mysql数据库。 以下是php5.3以下版本的安装方法。

1、首先是下载PHP安装文件和MYSQL安装文件,不过请注意MYSQL有很多个版本,有社区版、标准版、企业版、集群版,其中只有社区版是免费的。

2、在服务器上配置好IIS,这里推荐IIS7以上版本,控制面板-打开或关闭windows功能-万维网服务-应用程序开发功能里选上对应就可安装。

3、配置php环境:把php压缩包解压到C:\php目录下面,然后找到php.ini-dist,把他更名为php.ini,

修改里面的扩展目录

extension_dir = “C:\php\ext\”。

把以下扩展前面的分号去掉以启用

extension=php_curl.dll

extension=php_gd2.dll

extension=php_mysql.dll

fastcgi.impersonate=1 默认为0,如果使用IIS,你需要开启

cgi.fix_pathinfo=1

微宠网还为您提供以下相关内容希望对您有帮助:

php如何连接mysqlphp如何连接mysql数据库

5、mysqli_connect()是mysql连接的另一种方式,参数形式一样 6、首次使用mysql连接数据库时,要记得使用输入逻辑判断,服务器连接不成功或者选择数据库不成功,都要用Mysql_error或者mysql_errno来报错 7、mysql的报错,能够...

UBUNTU下安装 APACHE+PHP+MYSQL WEB服务器配置

Install Database Server sudo apt-get install mysql-server-5.0 Install Apache HTTP Server sudo apt-get install apache2 Install PHP5 and Apache PHP5 module sudo apt-get install php5 libapache2-mod-php5 Rest...

详解如何正确配置PHP开发环境

一、下载Apache、MySql和PHP1、Apache的下载Apache服务器可以通过官方提供的镜像地址来下载windows的Apache安装程序,不过都是英文版的,而且下载速度太慢。我建议大家去华军、天空或者中关村下载最新版的安装程序,速度很快。2、M...

CentOS系统中安装配置Apache+PHP+MySQL环境

--with-mysqld-user=beinan 这个是让mysql服务器也能让系统中普通用户beinan也能启动mysql服务器。当然要活学活用了你也可以把beinan换成你的系统中已经存在的普通用户,比如您的系统中已经存在sir这个用户,那就把beinan...

如何解决PHP连接MySQL出现问题?

检查连接参数:确保在PHP代码中正确设置了连接MySQL的参数,包括主机名(hostname)、用户名(username)、密码(password)和数据库名(database name)。检查这些参数是否正确,并且与MySQL服务器的配置相匹配。检查PHP的MySQL...

XP IIS5.1 + PHP 5.2.1 + MySQL 5.0.37 + Zend 3.2.6 + phpMyAdmin-2.10...

按Next后,可以看到的是服务器的选择,选择第1项IIS,直接点Next。 接下来的一路点Next,全接默认的设置,然后Install,Zend在此过程中会添加信息到php.ini,默认添加即可。 Zend安装完成。 ≡ phpMyAdmin2.10.0.2 的安装 ≡ 到其官方站点...

如何服务器搭建php环境搭建如何服务器搭建php环境搭建系统

windowsserver2008和windowsserver2003服务器操作系统 fastcgi、php、mysql安装包 IIS6安装配置PHP环境 11.安装IIS IIS是windows平台下比较成熟的web服务,安装方法也非常简单。 打开开始菜单,点击管理您的服务器(如图所示),点击添加或删除角色...

如何安全的配置和应用MySQL数据库_MySQL

如果要连接,它会寻找/tmp/mysql.sock文件来试图连接MySQL服务器,但是这里要连接的是chroot下的MySQL服务器。解决办法有两个:一个是在管理命令后面加入--socket=/chroot/mysql/tmp/mysql.sock。例如: #/usr/local/mysql/bin/mysql -...

2022年7个最佳PHPMySQL托管服务

ApacheMod_Lsapi使用LiteSpeed技术为PHP页面提供更高级别的性能和稳定性,同时使用更少的内存。BitNinja服务器安全。除了防火墙、双因素身份验证和日常备份等安全措施外,FastComet还通过使用BitNinja抵御XSS、DDos、恶意软件、暴力等自动攻击来...

免费空间如何搭建php服务器免费空间如何搭建php服务器

搭建php服务器包含什么什么?是指服务器软件还是配置文件?常用服务器环境配置:Apache+php+MySQL基本设置(需修改配置文件)假设你安装的都是官方提供的版本,且版本都正确的前提下:1、在Apache配置文件httpd.conf里加载php模块...

Top