存档

‘php’ 分类的存档

windows下apache对应多个域名并支持url rewrite

2010年8月5日 wasw100 没有评论

只需要修改一下配置文件就可以
1.使用文本编辑工具打开httpd.conf,找到

Include conf/extra/httpd-vhosts.conf

讲前面的#去掉

2.打开conf\extra目录下的httpd-vhosts.conf文件
添加如下形式的虚拟主机(以添加asd.com域名为例)

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.localhost
    DocumentRoot "D:/tools/Apache2.2/blog/wasw100"
    ServerName asd.com
    ServerAlias www.asd.com
    ErrorLog "logs/asd.com-error.log"
    CustomLog "logs/asd-host.localhost-access.log" common
</VirtualHost>

DocumentRoot是设置虚拟主机的根目录位置;
ServerName是设置该虚拟主机对应的域名;
ErrorLog是设置错误日志的位置;
CustomLog是设置该虚拟主机的访问日志的位置。

在windows下如此修改后,我们的asd.com还不支持url rewrite,我们还须要在httpd.conf添加如下内容就可以了

<Directory "D:/tools/Apache2.2/blog/wasw100">
    Options Indexes FollowSymLinks

    AllowOverride All

    Order allow,deny
    Allow from all

</Directory>

补充:要window下的apache支持url rewrite需要把httpd.conf 中LoadModule rewrite_module modules/mod_rewrite.so
把前面的#去掉,可参考windows下apache支持wordpress的url rewrite

如果还出现 403错误 You don’t have permission to access on this server.可以将httpd.conf中

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

将Deny from all改为Allow from all就可以了

–EOF–

分类: php 标签: , , ,

php数据类型的学习及使用

2010年6月1日 wasw100 没有评论

1.php的数据类型包括:
Integer(整数)
Float(浮点数,也叫Double,双精度)
String(字符串)
Boolean(布尔值)
Array(数组)
Object(对象)
此外还有两个特殊的类型:NULL(空)和resourse(资源)

基本上不能直接操作一个resourse变量,但是通常它们都将被函数返回,而且必须作为参数传递给其它函数。

2.常量
定义及使用如下

<?php
define('DB_NAME', 'my_blog');
echo DB_NAME;
?>

3.测试和设置变量类型
使用最常见的两个函数,分别是gettype()和settype(),函数原型如下:
string gettype(mixed var);
bool settype(mixed var, string type);

gettype()将返回一个包含类型名称的字符串:bool、int、double、string、array、object和resourse。如果变量类型不是标准类型之一,该函数就会返回”unknown type”;

settype()和gettype()的使用可看下面的例子

<? php
$a = 56;
echo gettype($a).'<br />';
settype($a, 'double');
echo gettype($a).'<br /&gt';
?>

输出结果如下:
integer
double

php还提供了一些特定类型的测试函数,每一个函数都使用一个变量作为其参数,并且返回true或false,这些函数如下:
is_array():检查变量是否为数组
is_double(), is_float(), is_real()(所有都是相同的函数):检查变量是否是浮点数
is_long(), is_int, is_integer()(所有都是相同的函数):检查变量是否是整数
is_string():检查变量是否是字符串
is_bool():检查变量是否是布尔值
is_object():检查变量是否是一个对象
is_resourse():检查变量是否是一个资源
is_null():检查变量是否是为null
is_scalar():检查变量是否是标量,即,一个整数、布尔值、字符串或浮点数
is_numeric():检查变量是否是任何类型的数字或数字字符串
is_callable():检查变量是否是有效的函数名称

4.测试变量状态
isset():函数原型
bool isset(mixed var, [mixed var[,...]]),这个函数需要一个变量名称作为参数,如果这个变量存在,则返回true,否则返回false。也可以传递一个由逗号间隔的变量列表,如果所有变量都被设置了,isset()函数将返回true。

unset():与isset()函数相对应,这个函数将销毁一个传进来的变量。它具有如下所示的函数原型:
viod unset(mixed var);

empty():用来检查一个变量是否存在,以及它的值是否为非空和非0,相应的返回true或false。函数原型:boolean empty(mixed var);
可用下面的例子对上面的结论进行验证:

<?php
$tireqty = 0; //改成1结果将会不同
echo 'isset($tireqty)'.isset($tireqty).'<br />';
echo 'isset($nothere)'.isset($nothere).'<br />';
echo 'empty($tireqty)'.empty($tireqty).'<br />';
echo 'empty($nothere)'.empty($nothere).'<br />';
unset($tireqty);
echo  'isset($tireqty)'.isset($tireqty).'<br />';
?>                                              

运行结果:
isset($tireqty)1
isset($nothere)
empty($tireqty)1
empty($nothere)1
isset($tireqty)

5.变量的重解释
可以通过调用一个函数来实现转换变量数据类型的目的。如下所示的3个函数可以用来实现这像功能:
int intval(mixed var[, int base]);
float floatval(mixed var);
string strval(mixed var);

intval()函数当转换的变量为字符串时指定转换的进制基础,这样就可以将16进制的字符串转换为整数。

根据 PHP 和MySQL web开发 整理。

–EOF–

分类: php 标签:

php mysql使用now()保存当前时间不正确的解决方法

2010年5月19日 wasw100 1 条评论

数据库设计使用datetime(此格式不包含时区)保存时间,数据库使用now()插入当前时间时,和本地时间不一致,(我用的美国主机,时间比我们北京时间晚13个小时)

解决方法一:不使用数据库的函数,直接使用时间字符串保存,例如在php中

<?php
ini_set('date.timezone','Asia/Shanghai');
$query = "insert into tb(tb_datetime) values('".date('Y-m-d H:m:s')."')";
?>

补充:ini_set(‘date.timezone’,'Asia/Shanghai’);设置时区为为北京时间,确保使用date函数生成的时间是符合我们要求的,可参考 php技巧:修改时区

解决方法二:
使用

DATE_ADD( UTC_TIMESTAMP( ) , INTERVAL 8 HOUR )

函数代替now()函数

–EOF–

分类: php 标签: ,

php技巧:修改时区

2010年5月19日 wasw100 没有评论

1.可以修改php.ini,
date.timezone = Asia/Shanghai

了解系统当前的时区,看phpinfo()

2.(推荐)如果你用的是虚拟主机,或者是国外的主机,上面的方法就不

是很方便了,可以php文件开头写上如下语句也可以

<?php
ini_set('date.timezone','Asia/Shanghai');
?>

参考:
1.[PHP]修改时区
2.php时区设置

–EOF–

分类: php 标签:

php curl结合新浪微博使用总结

2010年5月7日 wasw100 1 条评论

首先检查自己的php环境是否支持curl,可以使用phpinfo();函数检查。

在学习更为复杂的功能之前,先来看一下在PHP中建立cURL请求的基本步骤:(来源:基于 PHP的cURL快速入门
1. 初始化
2. 设置变量
3. 执行并获取结果
4. 释放cURL句柄
// 1. 初始化
$ch = curl_init();
// 2. 设置选项,包括URL
curl_setopt($ch, CURLOPT_URL, “http://www.nettuts.com”);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
// 3. 执行并获取HTML文档内容
$output = curl_exec($ch);
// 4. 释放curl句柄
curl_close($ch);
第二步(也就是 curl_setopt() )最为重要,一切玄妙均在此。有一长串cURL参数可供设置,它们能指定URL请求的各个细节。要一次性全部看完并理解可能比较困难,所以今天我们只试一下那些更常用也更有用的选项。

在curl_setopt()的各个选项可以参考(http://www.php.net/manual/en/function.curl-setopt.php

简单的例子:

<?php
$ch = curl_init("http://www.baidu.com/");
curl_exec($ch);
curl_close($ch);
?>

下面使用php curl获取关注对象uid列表为例说明如何调用新浪微博api
新浪给的例子是这样的:curl -u uid:password http://api.t.sina.com.cn/friends/timyang.xml?source=appkey(windows的用户可以在http://download.csdn.net/source/2317876下载curl.exe)
我们要做的就是把上面的curl转化为php curl(appKey给 @新浪微博开放平台 发私信获取,你也可以使用分享到新浪微博的appKey2924220432)
下面是实现代码,你只需添上你的appKey userName password 就可以运行了

<?php
$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, "http://api.t.sina.com.cn/friends/ids/wasw100.json?source=appKey");
// 设置是否显示header信息 0是不显示,1是显示  默认为0
curl_setopt($curl, CURLOPT_HEADER, 0);
// 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。0显示在屏幕上,1不显示在屏幕上,默认为0
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 要验证的用户名密码
curl_setopt($curl, CURLOPT_USERPWD, "username:password");
$data = curl_exec($curl);
curl_close($curl);
//echo $data;  var_dump($data); 用于显示数据
echo $data;
?>

其它的接口也是类似的调用。
#################################
php使用OAuth和sina微博进行交互
1.到http://code.google.com/p/libweibo/ 下载新浪微博的php lib。根据要求修改一下就可以运行了。
# 下载,然后解压,修改config.php中的key
# 打开index.php,将13行最后一个url改成你网站对应的callback.php的url
2.WeiboClient就可以完成我们的大部分功能,但是在默认配置下,我们不是得到的原样json,我们只需在微博weibooauth.php中搜索public $decode_json = TRUE;,改为false就可以了。
剩下的事就很简单了吧。

–EOF–

分类: php 标签: ,

cPanel中备份wordpress数据库,并与本地同步

2010年3月5日 wasw100 没有评论

假设你本地跑着一个wordpress,你在本地调试你的程序、格式,然后上传到服务器,为了是环境尽量一致,我们需要需要把远程数据库同步到本地(有时更可能为了数据的安全)。本地环境的搭建可以参考:
1.绿色版MySQL的安装和使用
2.xp下apache+php的环境的安装

备份数据库
1.进入cPanel管理面板,点 数据库 的 phpMy管理(phpMyAdmin),进入phpMyAdmin管理界面

2.在 phpMyAdmin管理界面 的左侧,选中你要备份的数据库,在右侧显示此数据库下面的所有表,然后全选。点上面的 导出 按钮,在新的界面中左侧选导出格式是sql,在另存为文件里选择:zip压缩或者gzip压缩,其余保持默认,然后点右下角的 执行 按钮,然后弹出一个保存对话框,备份成功

将备份数据同步到本地数据库
数据库备份后,剩下的工作就是同步本地数据库
1.解压刚才导出的数据库文件(以解压到D盘为例),使用文本编辑器打开解压出的sql文件,搜索你的博客名,例如我的就可以搜索wasw100.com,搜到插入表wp_options的http://www.wasw100.com替换为http://127.0.0.1

2.
a.进入mysql
打开命令行(win+r,输入cmd回车),进入d盘,输入D:\>mysql -uroot -proot(假设用户名密码都是root)

b.删掉原来的数据库
命令:drop database wpdb; ,我原来的数据库名叫 wpdb,具体你自己的可以打开你的wordpress的配置文件wp-config.php查看具体信息(包括数据库的用户名、密码)。

c.建立一个与原来名字相同的数据库
create database wpdb default character set utf8;

d.导入数据
退出到D盘符下(D:\>),输入命令(假设备份文件的名字是wp.sql):mysql -uroot -proot wpdb < wp.sql;

这样本地数据就和远程数据库同步成功了。

–EOF–

分类: php 标签: , ,

windows下apache支持wordpress的url rewrite

2010年3月3日 wasw100 没有评论

参考文章:http://sexywp.com/how-to-config-mod-rewrite-in-win.htm

在本地调试wordpress时apache服务器可能不支持url rewrite,可以根据如下步骤修改配置:

1.打开apache的配置文件:httpd.conf 搜索:LoadModule rewrite_module modules/mod_rewrite.so
把前面的#去掉

如果执行完第一步,重启服务器后,还是不支持url rewrite,那么执行第二步

2.在 httpd.conf 中存在下面格式的文字

<Directory "D:/tools/Apache2.2/htdocs">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride All

    #
    # Controls who can get stuff from this server.
    #
    Order allow,deny
    Allow from all

</Directory>

AllowOverride None 改为 AllowOverride All 就可以了。
(注意:可能有多个Directory标签,找到你wordpress所在目录的那个修改)

3.重启apache,这样apache就支持url rewrite了

–EOF–

分类: php 标签: , ,

xp下apache+php的环境的安装

2009年10月18日 wasw100 没有评论

想看一下php,在xp下配置了一个apache+php环境。

软件版本:

  1. apache_2.2.14-win32-x86-openssl-0.9.8k.msi
  2. php-5.2.11-Win32.zip(直接解压就可以用)

以上软件都在官方网站下载。

1、安装apache
直接安装(我安装的目录是D:\tools\Apache2.2)
中间有个填写服务器名的地方,可直接填写自己的计算机名,邮件填写自己的邮件。
在浏览器输入http://127.0.0.1/如果输出:

It works!

那么apache服务器就安装成功了。

2、安装php
直接解压即可,我解压到了D:\tools\php-5.2.11-Win32

3、配置
将php目录(D:\tools\php-5.2.11-Win32)下的php.ini-dist另存为php.ini保存到C:\WINDOWS下(以后配置php就需要修改这个文件)
libmysql.dll(支持MySQL数据库),
php5ts.dll(apache服务器支持php)
复制到C:\WINDOWS\system32(在win2k,nt复制到C:\WINNT\system32下)

剩下的就是修改配置文件了。
开始-》所有程序-》Apache Server 2.2-》Configure Apache Server-》Edit the Apache httpd.conf Configuration File
或者直接用文本编辑器打开:D:\tools\Apache2.2\conf(apache安装目录下conf文件夹)下的httpd.conf

搜索LoadModule,按对应的方式添加上:

LoadModule php5_module D:\tools\php-5.2.11-Win32\php5apache2_2.dll

然后搜索 AddType,在
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
后面添上

 AddType application/x-httpd-php .php
 AddType application/x-httpd-php .htm

重启一下服务器,这样服务器就支持php了

4、测试
新建一个文本文件,内容如下

<?php
phpinfo();
?>

保存到apache安装目录下的htdocs文件夹下(我的D:\tools\Apache2.2\htdocs),保存名为:test.php
打开浏览器,输入http://127.0.0.1/test.php
如果成功,就输出一些系统信息,如果失败,应该就原样输出
我也是第一次安装(接触)php,如有问题,请留言,大家共同探讨。

<!–今天(10月19号)做连接MySQL数据库是发现没有成功,下面是解决方法,有问题大家讨论–>
今天发现数据库还是连接不上,一连数据库出现下面的错误(要有错误显示,需要修改c:\windows下php.ini的display_errors = Off改为display_errors = On,负责不显示数据):

Fatal error: Call to undefined function mysql_connect() in D:\tools\Apache2.2\htdocs\connsql.php on line 8

然后Google,最后终于发现了问题的所在,既然apache连接php成功
php连接不上MySQL,那问题出现在php的配置上,而不是apache的配置上,所以继续修改php.ini

在C:\Windows下搜索:extension_dir,原来的配置是”.\”,你修改为你php解压到的路径,我的是修改为

extension_dir = "D:\tools\php-5.2.11-Win32\ext"

然后继续搜索extension,把

extension=php_curl.dll
extension=php_dba.dll
……
extension=php_imap.dll
……
extension=php_mysql.dll
extension=php_mysqli.dll

之前的分号去,重启apache服务器,问题解决。

<!– 10月20日更新 WordPress显示问题  –>

今天研究博客数据库的设计,下载了大名鼎鼎的WordPress中文版,安装一切正常,管理界面也正常,但是一访问主页就显示文件列表

修改了一下apache的配置文件(开始-》所有程序-》Apache Server 2.2-》Configure Apache Server-》Edit the Apache httpd.conf Configuration File)

搜索index.html,修改为index.php 问题解决,修改后如下

<IfModule dir_module>
    DirectoryIndex index.php
</IfModule>

重启apache,问题解决

–EOF–

分类: php 标签: