上周为Edu 2.0研究中心申请的空间今天批准下来了,所以中午抽空将站点从内网服务器迁移出去了。因为这过程中起了一点波折,所以还是觉得有必要记一笔,以后也可以有个参考。 以下基本是按本人操作的过程,因为之前并没经验,未必是最佳实践,看客自行斟酌,有不准确的,或者有更好的解决方法的,不妨也可以在评论中给提个建议: 1、大约12点收到FTP、MySQL帐户信息,打算开始迁移,所以在微博里放出风声,告知我们的成员在接下来的3个小时内将执行系统迁移,原部署于内网的系统会不可访问; 2、在本地服务器上,使用PHPMyAdmin,选中Drupal使用的数据库,选择export,将数据记录以默认格式导出为tempDrupal.SQL;如果你原先没有配置phpmyadmin,那么使用前需要修改phpmyadmin\libraries\config.default.php文件配置以下基本参数: $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['user'] = 'MYSQL数据库帐号'; $cfg['Servers'][$i]['password'] = 'MYSQL数据库密码'; 3.敲以下命令停止Apache和MySQL服务(具体服务名称以系统中配置的为准),用FTP帐号将原先的Drupal目录中的所有文件传送到目标空间中 net stop apache2.2 net stop mysql 4. 在目标空间上同样上传并配置一个phpmyadmin,登录后选择import,将之前导出的tempDrupal.SQL导入数据库中,这时在phpmyadmin中就可以看到数据库的内部结构了。 5、修改目标空间中的Drupal配置文件,即/sites/default/settings.php。将其中的数据库信息,设置为符合目标空间的值,这些设置语句形如下文。顺便也可以将系统的$base_url 、$cookie_domain均设置为站点的域名,例如“ 'http://et2x.zjnu.edu.cn';”(注意不带“/”) $databases = array ( 'default' => array ( 'default' => array ( 'database' => '数据库名称', 'username' => '数据库用户名', 'password' => '数据库密码', 'host' => 'localhost', 'port' => '', 'driver' => 'mysql', 'prefix' => '', ), ),); 6、到这一步时访问install.php,执行更新脚本,至此,迁移后的空间应该可以显示出来。如果在执行这一脚本时提示没有权限,可以在settings.php中设置 “$update_free_access = TRUE; ”(但执行完后一定要记得改回FALSE或注释掉) 7、不过我在此步登录之后做了一个手欠的事,顺手在主题列表选择另一个主题,结果系统报出一个“failed to open stream: "DrupalTemporaryStreamWrapper::stream_open"”的错误,愣了一会才意识到系统中配置的临时文件夹还没改,在“配置”/“媒体”/“文件系统”中更改了就恢复原先的主题风格了。 […]
View Details1、创建术语表访问 管理 > 结构 > 分类 > 添加词汇表(admin/structure/taxonomy/add)页面,填写词汇表的基本信息并点击保存 2、添加词汇创建完词汇表之后,便可以在术语表管理页面(admin/structure/taxonomy)看到刚才新建的“栏目分类”词汇表 点击词汇表后面的“添加术语”链接,进入添加术语页面,简单创建几个术语,然后对术语层级进行一下调整,得到如词汇结构。 3、添加内容类型字段 访问 管理 > 结构 > 内容类型(admin/structure/types)页面,可以看到系统中存在的内容类型的列表 4、点击“基本页面(page)”所在行的“管理字段”链接,进入“基本内容”内容类型的字段管理页面。在添加新字段处填写以下信息,然后点击“保存”: 标签:栏目分类 字段名称:field_category 存储的数据类型:术语来源 编辑此数据的表单元素:选择列表 在字段设置页面,选择术语来源,然后点击“保存字段设置” 5、选择“术语来源”之后,点击“保存字段设置”之后,会进入到字段详细配置页面,根据自己的需要对字段进行配置,因为这里只是做演示,直接点击页面最下方的“保存设置”即可 6、在返回的字段管理页面中,就可以看到“栏目分类”字段已经成功显示在内容类型的字段列表中了。拖动标签前面的十字架,将栏目分类移动到Title后面 7、创建内容访问 管理 > 信息面板 > 添加内容 > 基本页面(node/add/page)页面,已经可以在标题(Title)字段下方看到“栏目分类”字段了
View Details第一部分 入门 第一章 ■■■ 建立一个drupal7站点 本杰明 梅兰肯 丹 哈基姆扎德 达妮 诺丁著 “好吧,我们能用艰难的方法完成这事,或者我们可以用Drupal的方法完成这事。” 弗莱斯特 玛斯(红茶菌) 本书通过介绍使用Drupal 7创建网站的所有各个方面的内容,将会使你在Drupal的学习中少走弯路:它将会涉及结构和配置,模块开发,前台开发,持续运行项目,以及贡献Drupal的代码,文档,还有社区等等。 在第一章中还有什么比创建一个完整的站点更好的方法开始呢?在27页中,你要每小时从零点走到60英里(或每小时100公里,视情况而定)。在后面的章节中,你要使用Views【视图】的动态页面添加涡轮增压器,主题化赛车的条纹;以及Jquery奖杯的获得者;你还要执行一些商业方面花哨的练习等等。 在整本书中,我们将设法引导你以Drupal的方法做事。从来就没有只有一种方法能达到目地,但是有些方法忽视乃至反对Drupal的产品。相比之 下,Drupal的方式在Drupal的优点基础上是任何方式无法相比的。(第8章讲述了其中的优点之--一个活跃的在课程中能够持续给你提供帮助的社 区。) 在本章中你要创建的这个站点会允许用户轻松地创建和分类内容。方案不是假设的。本书需要一个网站,而你正在创建它!你将要: […]
View DetailsDrupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成。连续多年荣获全球最佳CMS大奖,是基于PHP语言最著名的WEB应用程序。截止2011年底,共有13,802位WEB专家参加了Drupal的开发工作;228个国家使用181种语言的729,791位网站设计工作者使用Drupal。著名案例包括:联合国、美国白宫、美国商务部、纽约时报、华纳、迪斯尼、联邦快递、索尼、美国哈佛大学、Ubuntu等。 Drupal诞生于2000年,是一个基于PHP语言编写的开发型CMF(内容管理框架),即:CMS+ framework。其中 framework是指Drupal内核中的功能强大的PHP类库和PHP函数库,以及在此基础上抽象的Drupal API。在网站开发能力上,Drupal和Yii、CodeIgniter、Zend、CakePHP等业界顶级PHP框架同样强大。形象的说,Drupal是一个附带CMS的PHP开发框架。Drupal创始人Dries Buytaert创办的美国Acquia公司的开发人员甚至戏称:Drupal是一个用于开发网站的“操作系统”(webOS),而且此称法被业界广泛接受。很多Drupaler(即Drupal开发者)信奉这样一条真理:既然Drupal已经为我们写好了CMS,那么我们为什么还要选择那些不含有CMS的PHP开发框架呢? Drupal是一套开源系统,全球数以万计的WEB开发专家都在为Drupal技术社区贡献代码。因此,Drupal的代码在安全性、健壮性上具有世界最高水平。这也是美国白宫、美国商务部、法国政府、纽约时报、SONY等著名政府和机构纷纷采用Drupal建设网站的最重要的原因。 Drupal不等于模板建站系统,他们之间有着本质的区别。Drupal的学习曲线相当漫长和陡峭,比PHP难度大得多,要求也高的多。事实上,只有精通XHTML、CSS、Javascript、PHP、MySql的开发人员,经过长期刻苦的学习,才有可能真正的驾驭Drupal,Drupal是给经验丰富的程序员用的,而不是给一般普通用户用的。模板建站系统则不同,模板系统根本不需要任何学习,不需要任何编程知识就可以使用,只适合初级用户搭建一些简单的网站。 Drupal具有业内最强的定制能力和灵活性,这也是造成Drupal学习难度太大的根本原因,这也是没有办法的事情,灵活性的提高必然使复杂程度提高。因此,Drupal技术圈内有一句名言——“Drupal有难度,学习需谨慎。” Drupal强大的定制开发能力,也使其成为众多有技术实力的网站建设公司优先选用的网站开发平台。因为,任何网站建设公司自己开发的系统,在技术上都无法达到Drupal的水平,这正是开源软件的优势所在:全世界的WEB专家都在为Drupal贡献自己的智慧,这是某个公司内部技术团队永远也无法享受到的。是否具有Drupal技术的开发能力也成为鉴别网站建设公司实力的试金石。没有技术实力的公司,根本没有能力驾驭Drupal。 Drupal的架构由三大部分组成:内核、模块、主题。三者通过Hook机制紧密的联系起来。其中,内核部分由世界上多位著名的WEB开发专家组成的团队负责开发和维护。 Drupal综合了强大并可自由配置的功能,能支持从个人博客(PersonalWeblog)到大型社区驱动(Community-Driven)的网站等各种不同应用的网站项目。Drupal最初是由DriesBuytaert所开发的一套社群讨论软件。之后,由于它的灵活的架构,方便的扩展等特性,使得世界上成千上万个程序员加入了Drupal的开发与应用中。今天,它已经发展成为一套强大的系统,很多大型机构都采用基于Drupal的框架建站,包括The Onion,Ain't ItCool News,SpreadFirefox,Ourmedia,KernelTrap,NewsBusters等等。它特别常见于社区主导的网站。 Drupal目前的最高版本是7.9,官方网站下载页面最近释出的版本为7.17,是官方推荐的稳定版。该版本由7.1版修复而来,修正了大量BUG,没有太多新功能,适合学习Drupal的新手安装。下载页面同时提供了Drupal 6.22等旧版本下载。
View DetailsFastCGI 进程超过了配置的活动超时时限 解决方法: %windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /[fullPath='C:\php\php-cgi.exe'].activityTimeout:600 如果还是不行,请查看IIS应用程序池,可以改为默认(DefaultAppPool)。 from url:http://www.cnblogs.com/jiangyao/archive/2010/09/21/1832384.html
View Details因为我用WAMP技术设计的一个数据处理系统出现了Maximum execution time of 30 seconds exceeded错误。从字面上就可以理解“最大执行时间超过30秒”,那应该就是APACHE或者PHP的执行时间设置的问题。在PHP.INI中找到一个参数:max_execution_time最大执行时间。将后面的值调大,然后重新启动APACHE服务,就OK了。 但这不是根本的解决之道,根本解决,我觉得应该再优化一下我的数据处理算法,减少数据计算时间。因为最近工作很忙,工作很多,千头万绪的,实在抽不出时间来重新设计算法,所以就只好先用这下解决方案代替一下下。 PS:本人非计算机专业,只是业余爱好。所设计的程序目的就是为了减轻工作量,降低劳动强度,提高工作效率。目前,该系统能够减轻超过50%以上的工作量,节省50%以上的纸张消耗,将半小时的数据统计时间缩短到1分钟以内。王婆卖瓜,自卖自夸。哈哈。我发现我真的很不要脸。 from url:http://blog.sina.com.cn/s/blog_70b166010100uk73.html
View Details作废函数如下: call_user_method()(使用 call_user_func() 替代) call_user_method_array() (使用 call_user_func_array() 替代) define_syslog_variables() dl() ereg() (使用 preg_match() 替代) ereg_replace() (使用 preg_replace() 替代) eregi() (使用 preg_match() 配合 ‘i’ 修正符替代) eregi_replace() (使用 preg_replace() 配合 ‘i’ 修正符替代) set_magic_quotes_runtime() 以及它的别名函数 magic_quotes_runtime() [color=olive]session_register() (使用 $_SESSION 超全部变量替代) session_unregister() (使用 $_SESSION 超全部变量替代) session_is_registered() (使用 $_SESSION 超全部变量替代) set_socket_blocking() (使用 stream_set_blocking() 替代) split() (使用 preg_split() 替代) spliti() (使用 preg_split() 配合 ‘i’ 修正符替代) sql_regcase() mysql_db_query() (使用 mysql_select_db() 和 mysql_query() 替代) mysql_escape_string() (使用 mysql_real_escape_string() 替代) 废弃以字符串传递区域设置名称. 使用 LC_* 系列常量替代. mktime() 的 is_dst 参数. 使用新的时区处理函数替代. 处理方法:editplus编辑器中,正则替换 替换ereg(),eregi():用preg_match替换 ereg\(“([^"]+)”替换为:preg_match(“/\1/” ereg\(‘([^"]+)’替换为:preg_match(‘/\1/’ eregi\(“([^"]+)”替换为:preg_match(“/\1/i” eregi\(‘([^"]+)’替换为:preg_match(‘/\1/i’ 替换ereg_replace(),eregi_replace():用preg_replace()替换 ereg_replace\(“([^"]+)”替换为:preg_replace(“/\1/” ereg_replace\(‘([^"]+)’替换为:preg_replace(‘/\1/’ ereg_ireplace\(“([^"]+)”替换为:preg_replace(“/\1/i” ereg_ireplace\(‘([^"]+)’替换为:preg_replace(‘/\1/i’ 如果 ereg_replace 的第一个参数不是正则表达式,可以用 str_replace 直接来替换 split用explode替换或preg_split替换=&使用=替换 出处:http://blog.duteba.com/technology/article/38.htm
View Details因为是在Drupal中遇到的问题,所以就在Drupal中解决。原因很简单,就是Drupal 6.x不支持PHP 5.3,Drupal 7没有这个问题,解决办法也很多。最简单的莫过于降级到PHP 5.2.x,如果由于一些特别的原因必须使用PHP 5.3+的话,可以尝试下列办法。 打开Drupal安装目录下的includes/common.inc文件,找到590行(如果没有修改过的话),显示的应该是
1 |
if ($errno & (E_ALL ^ E_NOTICE)) { |
将这一行替换成
1 |
if ($errno & (E_ALL & ~E_NOTICE & ~E_DEPRECATED)) { |
这一句将禁止所有Deprecated错误信息。如果你安装了Developer Tools模块的话,那么还需要修改devel/devel.module的460行,方法相同。 如果这个办法不好用的话,可以尝试修改php.ini。 打开php.ini,找到
1 |
error_reporting = E_ALL |
改成
1 |
error_reporting = E_ALL & ~E_DEPRECATED |
道理是一样的。 如果还不行,或者因为各种原因改不了以上两处的话,还有办法。 打开drupal\includes\file.inc文件,找到895行,如下。
1 |
elseif ($depth >= $min_depth && ereg($mask, $file)) { |
注意,如果895行不是这句的话,就在附近找找,或者直接搜索这句,找到以后把这句改为
1 |
elseif ($depth >= $min_depth && mb_ereg($mask, $file)) { |
这样怎么着应该都行了。 养成良好的编程习惯,修改之前务必备份。 from url:http://www.baifeng.me/web/hosting/2010/03/1240/
View Details静态方法的规则和静态变量是相同的。使用ststic关键字可以将方法标识为静态方法,通过类的名称和作用域限定操作符::可以访问静态方法。 静态方法和非静态方法之间有一个很重要的区别,就是在调用静态方法时,我们不需要创建类的实例。 Program List:用类名作为参数 用类名作为参数可以解决非继承的静态问题。 01 <?php 02 classFruit { 03 publicstatic$category= "I'm fruit"; 04 05 staticfunctionfind($class) 06 { 07 $vars= get_class_vars($class) ; 08 echo$vars['category'] ; 09 } 10 } 11 12 classApple extendsFruit { 13 publicstatic$category= "I'm Apple"; 14 } 15 16 Apple::find("Apple"); 17 ?> 程序运行结果: 1 I'm Apple Program List:重写基类方法 在派生类重写基类的方法。 01 <?php 02 classFruit 03 { 04 staticfunctionFoo ( $class= __CLASS__) 05 { 06 call_user_func(array($class, 'Color')); 07 } 08 } 09 10 classApple extendsFruit 11 { 12 staticfunctionFoo ( $class= __CLASS__) 13 { 14 parent::Foo($class); 15 } 16 17 staticfunctionColor() 18 { 19 echo"Apple's color is red"; 20 } 21 } 22 […]
View Details