论坛的附件功能当初设计的初衷并不是为了文件管理,由于服务器配置,php,网络等多方面因素,使得通过论坛上传文件并不是一个好方案。对于确实需要改善论坛附件上传条件的朋友可以尝试将上面提及的参数在php.ini进行设置,以适应大文件上传的需要。同时别忘记在论坛的后台相应做附件限制的地方进行设置。 论坛主要有2个地方可以对附件上传的大小进行限制,级别从高到低依次为: 帖子相关—附件类型尺寸 用户组—附件相关 同时,下面提供一个配置指导,来源一些成功通过http上传大附件的朋友的提供,当然,由于大家的服务器配置情况以及网络情况不同,并不一定适用你的情况,可能很多地方需要参照修改: 打开php.ini, 参数 设置 说明 file_uploads on 是否允许通过HTTP上传文件的开关。默认为ON即是开 upload_tmp_dir – 文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹 upload_max_filesize 8m 望文生意,即允许上传文件大小的最大值。默认为2M post_max_size 8m 指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M 说明 一般地,设置好上述四个参数后,在网络正常的情况下,上传<=8M的文件是不成问题 但如果要上传>8M的大体积文件,只设置上述四项还一定能行的通。除非你的网络真有100M/S的上传高速,否则你还得继续设置下面的参数。 max_execution_time 600 每个PHP页面运行的最大时间值(秒),默认30秒 max_input_time 600 每个PHP页面接收数据所需的最大时间,默认60秒 memory_limit 8m 每个PHP页面所吃掉的最大内存,默认8M   把上述参数修改后,在网络所允许的正常情况下,就可以上传大体积文件了

<?php /**  *    PHP导出EXCEL文件类.  */ class PhpToExcel{     /** public function start **/     static function xlsBOF()     {         echo pack( “ssssss”, 0×809, 0×8, 0×0, 0×10, 0×0, 0×0 );         return;     }     static function xlsEOF()     {         echo pack( “ss”, 0x0A, 0×00 );         return;     }     static function xlsWriteNumber($Row, [...]

在PHP中以非ROOT身份执行root命令 相信大家都遇到过这样的情况,想让apache运行一个root才能运行的命令或脚本.如何实现?方法如下: 比较科学且较为安全的办法是采用sudo,一般apache运行时的USER ID是apache,这里就假设是apache吧,我们要在php中调用mycommand程序完成一些必须有root权限才能完成的工作。 (1)首先必须确保已经安装了sudo程序包,如果没有请安装: Debian下: apt-get install sudo Redhat下: rpm -ivh sudo*.rpm (2)修改配置文件(/etc/sudoers)添加apache用户: 这个文件必须以root身份使用visudo命令来编辑,这是系统的要求. 用visudo打开后,在文件末尾添加一行: apache ALL=NOPASSWD:/usr/sbin/mycommand 意思是:apache在执行mycommand这个程序的时候以root权限执行且不用密码。 保存并退出。 (3)在php脚本里调用mycommand这个命令了的方法: <?php system(“sudo mycommand”); ?> 可以通过PHP变量传递参数。 需要注意的是mycommand的命令的可执行属性.

ECShop整合Discuz实现会员同步(图文详解)

ecshop与discuz的整合,主要是指会员同步注册,登录,登出等操作,实现ecshop和discuz共享会员数据功能其实都依赖于康盛公司的ucenter,关于ucenter我不做解释了,它相当于一个连接ecshop与discuz的桥梁,不懂的上网查查。 公司的网站就是在ecshop基础上面开发的,最近领导的意思是把discuz X2整合上来,关于ec与dz的整合我走了不少弯路。开始我的想法是在两个系统的数据库上面做改动,那样不是不可能实现,只是过程不是一般的繁琐,不经意 间我发现了康盛公司的ucenter,它就是提供这样功能的一个接口程序,忽然间我好像找到方向了。于是我开始上网查找相关资料,互联网上关于这两个系统 整合的文章讲的不尽如人意,都是在讲分别安装ucenter、ecshop、discuz,在我记忆中从discuz X1.5开始就自带ucenter了,只是当时没有深入去了解ucenter的功能,不然我也不会走这么多弯路,讲一句不入耳的话就是写这些文章的人根本 都没亲自去整合过这两个系统,他们只是看官方说明凭空想象写出来这些文章的,我的意思不是说这些人们的说法不能实现dz与ec的整合,在本文的最后我会把 我的做法和这些做法作一个对比。 我简单介绍一下我的思路是怎么来的吧。开始我按照互联网上找的说法去做,结果都失败了,原因是过程太繁琐。因为我知道discuz X2自带了ucenter,所以我就在该程序包里面找ucenter文件夹,很遗憾,这样的文件夹不存在,眼光停留在了uc_server与 uc_client两个文件夹上面,顿时我萌发了这样一个想法:“这两个文件夹名称从字面上理解一个是服务端,一个是客户端的意思,我把作为客户端的文件 夹拷贝到ecshop目录里面不就可以实现ecshop与ucenter的通信了吗?”或许有人会问我为什么会有这样的想法,这个我真不好回答,呵呵,只 能说是灵感来了吧,我把自己的操作过程记录下来了,大家请认真看我下面的操作。 一、安装discuz X2程序,在安装过程中选择“全新安装”,截图如下:   二、安装ECShop 2.7,安装过程我就不做讲解了。 三、这也是最重要的一步,具体过程如下: a、把discuz X2程序包里面的uc_client整个文件夹拷贝一份到ecshop根目录下面,如图: b、登录ec后台,点击会员管理栏目的会员整合,如图: c、在显示的页面中点击ucenter后面的安装按钮,如图: d、在显示的窗口中输入ucenter的URL以及创始人密码,如图: 温馨提示:ucenter的URL就是dz程序包里面uc_server文件夹的绝对地址,ucenter创始人密码是安装cz过程中自己设置的。 e、这也是最后一步,在显示的窗口中选择导入数据的方式,如图: 温馨提示:这一步骤也就是把ecshop的会员数据导入到ucenter中。 接下来去discuz后台的ucenter栏目,点击应用管理,列表中多出了ECSHOP这一项,并且后面显示“通信成功”至此,整合过程就算结束了,如图: 可能有人会问:“既然我们把ecshop与ucenter通信成功了,怎么不按照同样的步骤把discuz也和ucenter建立通信呢?”这也就 是我不采用独立安装ucenter的原因所在,在安装dz过程中我们选择了全新安装也就是默认把dz与uc建立了通信,不信你按照整合过程的最后一步骤去 查看一下就知道了,好了,文章就到这里,有任何疑问欢迎加我QQ646707726进行交流。

1、$_SESSION['PHP_SELF'] — 获取当前正在执行脚本的文件名 2、$_SERVER['SERVER_PROTOCOL'] — 请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。 3、$_SERVER['REQUEST_TIME'] — 请求开始时的时间戳。从 PHP 5.1.0 起有效。和time函数效果一样。 4、$_SERVER['argv'] — 传递给该脚本的参数。我试了下,get方法可以得到$_SERVER['argv'][0];post方法无法给他赋值。 5、$_SERVER['SERVER_NAME'] — 返回当前主机名。 6、$_SERVER['SERVER_SOFTWARE'] — 服务器标识的字串,在响应请求时的头信息中给出。 如Microsoft-IIS/6.0 7、$_SERVER['REQUEST_METHOD'] — 访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。 8、$_SERVER['QUERY_STRING'] – 查询(query)的字符串(URL 中第一个问号 ? 之后的内容)。 9、$_SERVER['DOCUMENT_ROOT'] — 当前运行脚本所在的文档根目录。在服务器配置文件中定义。 如E:\server 10、$_SERVER['HTTP_ACCEPT'] — 当前请求的 Accept: 头信息的内容。 11、$_SERVER['HTTP_ACCEPT_CHARSET'] — 当前请求的 Accept-Charset: 头信息的内容。例如:“iso-8859-1,*,utf-8”。 12、$_SERVER['HTTP_ACCEPT_ENCODING'] — 当前请求的 Accept-Encoding: 头信息的内容。例如:“gzip”。 13、$_SERVER['HTTP_ACCEPT_LANGUAGE'] — 当前请求的 Accept-Language: 头信息的内容。例如:“en”。 [...]

PHP date与gmdate的区别及如何修改PHP的默认时区

  PHP中的时间有2个格式化函数:date()和gmdate(),在官方的文档中的描述为:   date — 格式化一个本地时间/日期   gmdate — 格式化一个 GMT/UTC 日期/时间,返回的是格林威治标准时(GMT)。   举个例子,我们现在所在的时区是+8,那么服务器运行以下脚本返回的时间应该是这样的:   当前时间假定是2007-03-14 12:15:27   echo date(‘Y-m-d H:i:s’, time()); 输出为:2007-03-14 12:15:27   echo gmdate(‘Y-m-d H:i:s’, time()); 输出为:2007-03-14 04:15:27   但是这只是在Linux+Apache下运行PHP所得的结果,如果在Windows下运行,则2个函数返回都是:2007-03-14 04:15:27。   所以,我们应该给一个兼容性的写法,统一使用gmdate,并手工设置当前时区,写法改进如下:   echo gmdate(‘Y-m-d H:i:s’, time() + 3600 * 8);   这样不管在Linux+Apache下还是Windows下都得到了正确的结果,当然这样写还有一个好处,当网站是面向全世界的时候,那么网站用户只要设置所在的时区,程序自动根据用户设置的时区进行时间计算,数据库中信息发布时间只存当前的time()所生成的时间,那么在中国+8时区看到的发布时间是:2007-03-14 12:15:27,那么在欧洲+2时区用户看到这个信息的发布时间是:2007-03-14 06:15:27,这样信息的时间就全部对应正确了。 ====================================================        修改PHP的默认时区      每个地区都有自己的本地时间,在网上以及无线电通信中,时间的转换问题就显得格外突出。整个地球分为二十四个时区,每个时区都有自己的本地时间。在国际无线电或网络通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC,Universal Time Coordinated),是由世界时间标准设定的全球标准时间。UTC原先也被称为格林威治标准时间(GMT,Greenwich Mean Time),都与英国伦敦的本地时间相同。 PHP默认的时区设置是UTC时间,而北京正好位于时区的东八区,领先UTC八个小时。所以在使用PHP中像time()等获取当前时间的函数时,得到的时间总是不对,表现是和北京时间相差八个小时。如果希望正确的显示北京时间,就需要修改默认的时区设置,可以通过以下两种方式完成。 如果使用的是独立的服务器,有权限修改配置文件,设置时区就可以通过修改php.ini中的date.timezone属性完成。我们可以将这个属性的值设置为”Asia/Shang”、”Asia/Chongqing”、”Etc/GMT-8″或PRC等中的一个,再在PHP脚本中获取的当前时间就是北京时间。修改PHP的配置文件如下所示: date.timezone = Etc/GMT-8        //在配置文件中设置默认时区为东8区(北京时间)  如果您使用的是共享服务器,没有权限修改配置文件php.ini,并且PHP版本又在5.1.0以上,也可以在输出时间之前调用date_default_timezone_set()函数设置时区。该函数需要提供一个时区标识符作为参数,和配置文件中date.timezone属性的值相同。该函数的使用如下所示: date_default_timezone_set(‘PRC’);           //在输出时间之前设置时区,PRC为中华人民共和国 echo date(‘Y-m-d H:i:s’, time());         //输出的当前时间为北京时间  [...]

PHP的Socket编程 计算机进程可以使用socket和其他进程通信,通过socket,其他进程的位置是透明的。这些进程可以在同一台计算机上也可以在不同的计算机上。 在PHP中,socket是以扩展的方式加载的,如果无法使用socket相关函数,请确认是否有打开此扩展。 下面我们以一个面向连接的客户端和服务器的简单实现说明一些函数的使用,在此之后,简单介绍在PHP的内部是如何实现这些函数的。 【客户端实现】 如下所示代码为客户端的实现代码: set_time_limit(0); $host = “127.0.0.1″; $port = 2046; $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)or die(“Could not create socket\n”); // 创建一个Socket $connection = socket_connect($socket, $host, $port) or die(“Could not connet server\n”); // 连接 socket_write($socket, “time”) or die(“Write failed\n”); // 数据传送 向服务器发送消息 while ($buffer = socket_read($socket, 1024, PHP_NORMAL_READ)) { echo(“Data sent was: time\nResponse [...]

PHP WebServices and C# / .NET SOAP Clients

Code Zulu Bind Maker is a project I started working on about 3 years ago. Its a stupid little app that configures game settings for Counter-Strike. When I wrote it, version 1.6 was in beta, and everybody played version 1.5 (which was ever so different). Anyway I run a website that supports the app, and [...]

NuSOAP 是 PHP 环境下的 WEB 服务编程工具,用于创建或调用 WEB 服务。它是一个开源软件,当前版本是 0.7.2 ,支持 SOAP1.1 、 WSDL1.1 ,可以与其他支持 SOAP1.1 和 WSDL1.1 的系统互操作。 NuSOAP 完全由PHP语言编写,由一系列 PHP 类组成,不需要扩展库的支持,这种特性使得 NuSOAP 可以用于所有的 PHP 环境,不受服务器安全设置的影响。 1. NuSOAP 的获取和安装 NuSOAP 项目建立在 SourceForge 上,网络地址是: http://sourceforge.net/projects/nusoap/  或 http://dietrich.ganx4.com/nusoap,这里,可以下载到 NuSOAP 的最新的版本。 NuSOAP 的安装比较简单,把下载的 NuSOAP 的文件拷贝到服务器上,可以放在独立的目录里,也可以与程序代码放在相同的目录里,只要你的 PHP 代码能够访问到这些文件就可以了。 本文的测试环境基于 PHP4.3.2 和 NuSOAP 0.7.2 版本, NuSOAP 安装在 WEB 目录“ /nusoap ”里,有两个子目录, [...]

Session,英文翻译为“会话”,两个人聊天,从第一句问好,到最后一句再见,这就构成了一个会话。Php里的session主要是指客户端浏览器与服务端数据交换的对话,从浏览器打开到关闭,一个最简单的会话周期。 计算机语言一般怎么实现会话呢?举个通俗的例子: 服务端好比一个理发店,客户端好比每一个去理发的客人,很多理发店都有这种促销手段,连续消费10次的客人,可以免费一次,大概有三种方式来实现: 1、理发师傅记性太好,你来过几次,他看一眼就知道 ————这叫协议本身支持会话; 2、每个客人发一个会员卡,你每次消费,都要带着这个卡片,消费一次记录一笔,当然还要加盖印章 ————这叫通过cookie实现会话,缺点是安全性不高,我完全可以伪造会员卡或者公章; 3、理发店准备一个大帐本,客人每人对应一个会员号或者自己的个人资料,甚至密码,每个客人来消费,报一下自己的会员号,再把消费次数记录到大帐本里 ————这就是session实现会话,客人脑子里的会员号就是保存在客户端的SESSIONID,大帐本就是保存在服务端的session数据,这样相比第二种方法,安全性要高很多,除非你说你把自己的会员号和密码都搞丢了,这叫做伪造客户端的SESSIONID。 因为http协议是无状态的,所以php要实现会话只能通过后面两种方式,前一种cookie,缺点已经说了,安全性不高,所以重要的会话会选择使用session。session会话必须依靠一个标识,也可以理解成一个暗号,就是SESSIONID。这是个经过加密的串,保存在客户端,通常在cookie里,客户端与服务端的每次交流都是通过这个SESSIONID,客户端先自报家门,服务器才能找到你在服务端保存的会话数据,继续通话。

© 2011 科创网 豫ICP备11029392号 Suffusion theme by Sayontan Sinha