$xjj  —>  小丶鸡丷鸡

Tag: PHP

PHP连接Oracle

@2010,08.02 13:59:53

windows和Linux都能执行

Oracle Call Interface(OCI)使用户可以访问 Oracle 10,Oracle9,Oracle8 和 Oracle7 数据库。支持将 PHP 变量与 Oracle 占位符(placeholder)绑定,具有完整的 LOB,FILE 和 ROWID 支持,以及允许使用用户提供的定义变量。

例子 1. 基本查询

$conn = oci_connect('hr', 'hr', 'orcl');
if (!$conn) {
$e = oci_error();
print htmlentities($e['message']);
exit;
}

$query = 'SELECT * FROM DEPARTMENTS';

$stid = oci_parse($conn, $query);
if (!$stid) {
$e = oci_error($conn);
print htmlentities($e['message']);
exit;
}

$r = oci_execute($stid, OCI_DEFAULT);
if(!$r) {
$e = oci_error($stid);
echo htmlentities($e['message']);
exit;
}

print '

‘;
while($row = oci_fetch_array($stid, OCI_RETURN_NULLS)) {
print ‘
‘;
foreach($row as $item) {
print ‘

‘;
}
print ‘

‘;
}
print ‘

‘.($item?htmlentities($item):’ ‘).’

‘;

oci_close($conn);
?>

例子 2. 用绑定变量插入

// Before running, create the table:
// CREATE TABLE MYTABLE (mid NUMBER, myd VARCHAR2(20));

$conn = oci_connect('scott', 'tiger', 'orcl');

$query = 'INSERT INTO MYTABLE VALUES(:myid, :mydata)';

$stid = oci_parse($conn, $query);

$id = 60;
$data = 'Some data';

oci_bind_by_name($stid, ':myid', $id);
oci_bind_by_name($stid, ':mydata', $data);

$r = oci_execute($stid);

if($r)
print "One row inserted";

oci_close($conn);

?>

例子 3. 将数据插入到 CLOB 列中

// Before running, create the table:
// CREATE TABLE MYTABLE (mykey NUMBER, myclob CLOB);

$conn = oci_connect('scott', 'tiger', 'orcl');

$mykey = 12343; // arbitrary key for this example;

$sql = "INSERT INTO mytable (mykey, myclob)
VALUES (:mykey, EMPTY_CLOB())
RETURNING myclob INTO :myclob";

$stid = oci_parse($conn, $sql);
$clob = oci_new_descriptor($conn, OCI_D_LOB);
oci_bind_by_name($stid, ":mykey", $mykey, 5);
oci_bind_by_name($stid, ":myclob", $clob, -1, OCI_B_CLOB);
oci_execute($stid, OCI_DEFAULT);
$clob->save(“A very long string”);

oci_commit($conn);

// Fetching CLOB data

$query = ‘SELECT myclob FROM mytable WHERE mykey = :mykey’;

$stid = oci_parse ($conn, $query);
oci_bind_by_name($stid, “:mykey”, $mykey, 5);
oci_execute($stid, OCI_DEFAULT);

print ‘

‘;
while ($row = oci_fetch_array($stid, OCI_ASSOC)) {
$result = $row['MYCLOB']->load();
print ‘

‘;
}
print ‘

‘.$result.’

‘;

?>

可以很容易地访问存储过程,就和从命令行访问一样。 例子 4. 使用存储过程

// by webmaster at remoterealty dot com
$sth = oci_parse($dbh, "begin sp_newaddress( :address_id, '$firstname',
'$lastname', '$company', '$address1', '$address2', '$city', '$state',
'$postalcode', '$country', :error_code );end;");

// This calls stored procedure sp_newaddress, with :address_id being an
// in/out variable and :error_code being an out variable.
// Then you do the binding:

oci_bind_by_name($sth, ":address_id", $addr_id, 10);
oci_bind_by_name($sth, ":error_code", $errorcode, 10);
oci_execute($sth);

?>

连接处理
OCI8 扩展提供了 3 个不同函数来连接 Oracle。取决于用户来使用对自己的应用程序最合适的函数。本节的信息有助于用户作出合适的选择。

连接到 Oracle 服务器从所需的时间上来讲是个相当花费的操作。oci_pconnect() 函数使用了一个连接的持久缓冲区,可以被不同的脚本请求重复使用。这意味着通常在每个 PHP 进程(或 Apache 子进程)中只需要连接一次。

如果应用程序连接 Oracle 时对每个 web 用户都使用了不同的认证信息,则由 oci_pconnect() 使用的持久缓冲区就用处不大了,因为随着并发用户的增加,到某个程度后会由于要保持太多的空闲连接而对 Oracle 服务器的整体性能起到逆反的影响。如果应用程序是这样的架构,建议要么用 oci8.max_persistent 和 oci8.persistent_timeout 配置选项(此二者可以使用户控制持久连接缓冲区的大小和生命周期)来协调应用程序,要么用 oci_connect() 来连接。

oci_connect() 和 oci_pconnect() 都使用了一个连接缓冲区。如果在某个脚本中用同样的参数多次调用 oci_connect(),则第二个和之后的调用会返回已有的连接句柄。oci_connect() 使用的连接缓冲区会在脚本执行完毕后或者明确地关闭了连接句柄时被清空。oci_pconnect() 有相似的行为,不过其缓冲区独立地维持着并在不同请求之间都存活着。

要记住此缓冲特性,因为它使两个句柄没有在事务级隔离开来(事实上是同一个连接句柄,因此没有任何方式的隔离)。如果应用程序需要两个独立的,事务级隔离的连接,应该使用 oci_new_connect()。

oci_new_connect() 总是创建一个到 Oracle 服务器的新连接,不管其它连接是否已经存在。高流量的 web 应用应该避免使用 oci_new_connect(),尤其是在程序最忙的部分。

有关于它的其他函数:
目录
OCI-Collection->append — 向 collection 增加单元
OCI-Collection->assign — 从现有的另一个 collection 向 collection 赋值
OCI-Collection->assignElem — 给 collection 中的单元赋值
OCI-Collection->free — 释放关联于 collection 的对象的资源
OCI-Collection->getElem — 返回单元的值
OCI-Collection->max — 返回 collection 中单元的最大数目
OCI-Collection->size — 返回 collection 中的单元数目
OCI-Collection->trim — 从 collection 尾端开始删除单元
OCI-Lob->append — Appends data from the large object to another large object
OCI-Lob->close — 关闭 LOB 描述符
OCI-Lob->eof — Tests for end-of-file on a large object’s descriptor
OCI-Lob->erase — Erases a specified portion of the internal LOB data
OCI-Lob->export — 将 LOB 的内容导出到文件中
OCI-Lob->flush — Flushes/writes buffer of the LOB to the server
OCI-Lob->free — 释放与 LOB 描述符所关联的资源
OCI-Lob->getBuffering — Returns current state of buffering for the large object
OCI-Lob->import — 将数据从文件导入 LOB
OCI-Lob->load — 返回大对象的内容
OCI-Lob->read — Reads part of the large object
OCI-Lob->rewind — Moves the internal pointer to the beginning of the large object
OCI-Lob->save — 将数据保存到大对象中
OCI-Lob->seek — Sets the internal pointer of the large object
OCI-Lob->setBuffering — Changes current state of buffering for the large object
OCI-Lob->size — Returns size of large object
OCI-Lob->tell — Returns current position of internal pointer of large object
OCI-Lob->truncate — Truncates large object
OCI-Lob->write — Writes data to the large object
OCI-Lob->writeTemporary — 写入一个临时的大对象
oci_bind_by_name — 绑定一个 PHP 变量到一个 Oracle 位置标志符
oci_cancel — 取消从游标读取数据
oci_close — 关闭 Oracle 连接
oci_commit — 提交未执行的事务处理
oci_connect — 建立一个到 Oracle 服务器的连接
oci_define_by_name — 在 SELECT 中使用 PHP 变量作为定义的步骤
oci_error — 返回上一个错误
oci_execute — 执行一条语句
oci_fetch_all — 获取结果数据的所有行到一个数组
oci_fetch_array — Returns the next row from the result data as an associative or numeric array, or both
oci_fetch_assoc — Returns the next row from the result data as an associative array
oci_fetch_object — Returns the next row from the result data as an object
oci_fetch_row — Returns the next row from the result data as a numeric array
oci_fetch — Fetches the next row into result-buffer
oci_field_is_null — 检查字段是否为 NULL
oci_field_name — 返回字段名
oci_field_precision — 返回字段精度
oci_field_scale — 返回字段范围
oci_field_size — 返回字段大小
oci_field_type_raw — 返回字段的原始 Oracle 数据类型
oci_field_type — 返回字段的数据类型
oci_free_statement — 释放关联于语句或游标的所有资源
oci_internal_debug — 打开或关闭内部调试输出
oci_lob_copy — Copies large object
oci_lob_is_equal — Compares two LOB/FILE locators for equality
oci_new_collection — 分配新的 collection 对象
oci_new_connect — 建定一个到 Oracle 服务器的新连接
oci_new_cursor — 分配并返回一个新的游标(语句句柄)
oci_new_descriptor — 初始化一个新的空 LOB 或 FILE 描述符
oci_num_fields — 返回结果列的数目
oci_num_rows — 返回语句执行后受影响的行数
oci_parse — 配置 Oracle 语句预备执行
oci_password_change — 修改 Oracle 用户的密码
oci_pconnect — 使用一个持久连接连到 Oracle 数据库
oci_result — 返回所取得行中字段的值
oci_rollback — 回滚未提交的事务
oci_server_version — 返回服务器版本信息
oci_set_prefetch — 设置预提取行数
oci_statement_type — 返回 OCI 语句的类型
ocibindbyname — oci_bind_by_name() 的别名
ocicancel — oci_cancel() 的别名
ocicloselob — OCI-Lob->close 的别名
ocicollappend — OCI-Collection->append 的别名
ocicollassign — OCI-Collection->assign 的别名
ocicollassignelem — OCI-Collection->assignElem 的别名
ocicollgetelem — OCI-Collection->getElem 的别名
ocicollmax — OCI-Collection->max 的别名
ocicollsize — OCI-Collection->size 的别名
ocicolltrim — OCI-Collection->trim 的别名
ocicolumnisnull — oci_field_is_null() 的别名
ocicolumnname — oci_field_name() 的别名
ocicolumnprecision — oci_field_precision() 的别名
ocicolumnscale — oci_field_scale() 的别名
ocicolumnsize — oci_field_size() 的别名
ocicolumntype — oci_field_type() 的别名
ocicolumntyperaw — oci_field_type_raw() 的别名
ocicommit — oci_commit() 的别名
ocidefinebyname — oci_define_by_name() 的别名
ocierror — oci_error() 的别名
ociexecute — oci_execute() 的别名
ocifetch — oci_fetch() 的别名
ocifetchinto — 获取下一行到一个数组
ocifetchistatement — oci_fetch_all() 的别名
ocifreecollection — OCI-Collection->free 的别名
ocifreecursor — oci_free_statement() 的别名
ocifreedesc — OCI-Lob->free 的别名
ocifreestatement — oci_free_statement() 的别名
ociinternaldebug — oci_internal_debug() 的别名
ociloadlob — OCI-Lob->load 的别名
ocilogoff — oci_close() 的别名
ocilogon — oci_connect() 的别名
ocinewcollection — oci_new_collection() 的别名
ocinewcursor — oci_new_cursor() 的别名
ocinewscriptor — oci_new_descriptor() 的别名
ocinlogon — oci_new_connect() 的别名
ocinumcols — oci_num_fields() 的别名
ociparse — oci_parse() 的别名
ociplogon — oci_pconnect() 的别名
ociresult — oci_result() 的别名
ocirollback — oci_rollback() 别名
ocirowcount — oci_num_rows() 的别名
ocisavelob — OCI-Lob->save 的别名
ocisavelobfile — OCI-Lob->import 的别名
ociserverversion — oci_server_version() 的别名
ocisetprefetch — oci_set_prefetch() 的别名
ocistatementtype — oci_statement_type() 的别名
ociwritelobtofile — OCI-Lob->export 的别名
ociwritetemporarylob — OCI-Lob->writeTemporary 的别名

***************************
PHP连接Oracle函数大全
1、oci_connect(用户名,密码,服务名):连接Oracle数据库. 例如:$conn = oci_connect(“admin”, “admin”, local’);

2、oci_parse(连接名,SQL语句):分析 SQL 语法,例如:$res = oci_parse($conn,$Sql);

3、oci_execute(分析后的SQL语句):执行SQL语句,例如:oci_execute($res);

***********************************************
设置Apache+PhP支持
1、先到Oracle网站上下载 instantclient-basic-win32-10.2.0.3-20061115.zip

2、在C盘增加文件夹instantclient10_1

3、把以上ZIP文件中Copy出oci.dll、oraociei10.dll、orannzsbb10.dll 到文件夹instantclient10_1

4、找到Oracle中的tnsnames.ora 也copy进文件夹instantclient10_1

5、设置windows环境变量,把C\instantclient10_1加进path变量中.

6、打开D:\usr\local\php\php.ini ,把extension=php_oci8.dll前的”;”去掉

7、重启Apache。

8、查看http://127.0.0.1/phpenv.php 中是否有 Oracle数据库支持 √
Oracle 8 数据库支持 √

或http://127.0.0.1/phpinfo.php中是否有
oci8

OCI8 Support enabled
Revision $Revision: 1.257.2.6 $
Active Persistent Links 0
Active Links 0
Temporary Lob support enabled
Collections support enabled

如果都有,说明设置成功,可以用于解决Call to undefined function oci_connect()之类的问题

9、连接语句:

putenv("ORACLE_SID=jcd");
putenv("ORACLE_HOME=E:\oracle\ora90");
putenv("NLS_LANG=AMERICAN_AMERICA.ZHS16GBK");
$conn = oci_connect("xhsd_jcd", "jcd", 'xhsd_jcd');
$Sql="select spbs,num,order_code from product_info where order_code like '%20070919%'";
$res = oci_parse($conn,$Sql);
oci_execute($res);
while ($row = oci_fetch_array($res))
{
echo '

‘.$row[0].’ ‘.$row[1].’ ‘.$row[2].’

‘;
}
?>

留言 : 更多...

PHP中Mysql函数总汇

@2010,06.22 16:58:42

1、mysql_connect()-建立数据库连接
格式:
resource mysql_connect([string hostname [:port] [:/path/to/socket] [, string username] [, string password]])
例:
$conn = @mysql_connect(“localhost”, “username”, “password”) or die(“不能连接到Mysql Server”);
说明:使用该连接必须显示的关闭连接

2、mysql_pconnect()-建立数据库连接
格式:
resource mysql_pconnect([string hostname [:port] [:/path/to/socket] [, string username] [, string password]])
例:
$conn = @mysql_pconnect(“localhost”, “username”, “password”) or dir(“不能连接到Mysql Server”);
说明:使用该连接函数不需要显示的关闭连接,它相当于使用了连接池

3、mysql_close()-关闭数据库连接
例:
$conn = @mysql_connect(“localhost”, “username”, “password”) or die(“不能连接到Mysql Server”);
@mysql_select_db(“MyDatabase”) or die(“不能选择这个数据库,或数据库不存在”);
echo “你已经连接到MyDatabase数据库”;
mysql_close();

4、mysql_select_db()-选择数据库
格式:
boolean mysql_select_db(string db_name [, resource link_id])
例:
$conn = @mysql_connect(“localhost”, “username”, “password”) or die(“不能连接到Mysql Server”);
@mysql_select_db(“MyDatabase”) or die(“不能选择这个数据库,或数据库不存在”);

5、mysql_query()-查询MySQL
格式:
resource mysql_query (string query, [resource link_id])
例:
$linkId = @mysql_connect(“localhost”, “username”, “password”) or die(“不能连接到Mysql Server”);
@mysql_select_db(“MyDatabase”) or die(“不能选择这个数据库,或者数据库不存在”);
$query = “select * from MyTable”;
$result = mysql_query($query);
mysql_close();
说明:若SQL查询执行成功,则返回资源标识符,失败时返回FALSE。若执行更新成功,则返回TRUE,否则返回FALSE

6、mysql_db_query()-查询MySQL
格式:
resource mysql_db_query(string database, string query [, resource link_id])
例:
$linkId = @mysql_connect(“localhost”, “username”, “password”) or die(“不能连接到MysqlServer”);
$query = “select * from MyTable”;
$result = mysql_db_query(“MyDatabase”, $query);
mysql_close();
说明:为了使代码清晰,不推荐使用这个函数调用

7、mysql_result()-获取和显示数据
格式:
mixed mysql_result (resource result_set, int row [, mixed field])
例:
$query = “select id, name from MyTable order by name”;
$result = mysql_query($query);
for($count=0;$count<=mysql_numrows($result);$count++)
{
$c_id = mysql_result($result, 0, "id");
$c_name = mysql_result($result, 0, "name");
echo $c_id,$c_name;
}
说明:最简单、也是效率最低的数据获取函数

8、mysql_fetch_row()-获取和显示数据
格式:
array mysql_fetch_row (resource result_set)
例:
$query = "select id, name from MyTable order by name";
$result = mysql_query($query);
while (list($id, $name) = mysql_fetch_row($result)) {
echo("Name: $name ($id)
“);
}
说明:函数从result_set中获取整个数据行,将值放在一个索引数组中。通常会结使list()函数使用

9、mysql_fetch_array()-获取和显示数据
格式:
array mysql_fetch_array (resource result_set [, int result_type])
例:
$query = “select id, name from MyTable order by name”;
$result = mysql_query($query);
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$id = $row["id"];
$name = $row["name"];
echo “Name: $name ($id)
“;
}
又例:
$query = “select id, name from MyTable order by name”;
$result = mysql_query($query);
while($row = mysql_fetch_array($result, MYSQL_NUM)) {
$id = $row[0];
$name = $row[1];
echo “Name: $name ($id)
“;
}
说明:
result_type的值有:
MYSQL_ASSOC: 字段名表示键,字段内容为值
MYSQL_NUM: 数值索引数组,操作与mysql_fetch_ros()函数一样
MYSQL_BOTH: 即作为关联数组又作为数值索引数组返回。result_type的默认值。

10、mysql_fetch_assoc()-获取和显示数据
格式:
array mysql_fetch_assoc (resource result_set)
相当于调用 mysql_fetch_array(resource, MYSQL_ASSOC);

11、mysql_fetch_object()-获取和显示数据
格式:
object mysql_fetch_object(resource result_set)
例:
$query = “select id, name from MyTable order by name”;
while ($row = mysql_fetch_object($result)) {
$id = $row->id;
$name = $row->name;
echo “Name: $name ($id)
“;
}
说明:返回一个对象,在操作上与mysql_fetch_array()相同

12、mysql_num_rows()-所选择的记录的个数
格式:
int mysql_num_rows(resource result_set)
例:
query = “select id, name from MyTable where id > 65″;
$result = mysql_query($query);
echo “有”.mysql_num_rows($result).”条记录的ID大于65″;
说明:只在确定select查询所获取的记录数时才有用。

13、mysql_affected_rows()-受Insert,update,delete影响的记录的个数
格式:
int mysql_affected_rows([resource link_id])
例:
$query = “update MyTable set name=’CheneyFu’ where id>=5″;
$result = mysql_query($query);
echo “ID大于等于5的名称被更新了的记录数:”.mysql_affected_rows();
说明:该函数获取受INSERT,UPDATE或DELETE更新语句影响的行数

14、mysql_list_dbs()-获取数据库列表信息
格式:
resource mysql_list_dbs([resource link_id])
例:
mysql_connect(“localhost”, “username”, “password”);
$dbs = mysql_list_dbs();
echo “Databases:
“;
while (list($db) = mysql_fetch_rows($dbs)) {
echo “$db
“;
}
说明:显示所有数据库名称

15、mysql_db_name()-获取数据库名
格式:
string mysql_db_name(resource result_set, integer index)
说明:该函数获取在mysql_list_dbs()所返回result_set中位于指定index索引的数据库名

16、mysql_list_tables()-获取数据库表列表
格式:
resource mysql_list_tables(string database [, resource link_id])
例:
mysql_connect(“localhost”, “username”, “password”);
$tables = mysql_list_tables(“MyDatabase”);
while (list($table) = mysql_fetch_row($tables)) {
echo “$table
“;
}
说明:该函数获取database中所有表的表名

17、mysql_tablename()-获取某个数据库表名
格式:
string mysql_tablename(resource result_set, integer index)
例:
mysql_connect(“localhost”, “username”, “password”);
$tables = mysql_list_tables(“MyDatabase”);
$count = -1;
while (++$count < mysql_numrows($tables)) {
echo mysql_tablename($tables, $count)."
“;
}
说明:该函数获取mysql_list_tables()所返回result_set中位于指定index索引的表名

18、mysql_fetch_field()-获取字段信息
格式:
object mysql_fetch_field(resource result [, int field_offset])
例:
mysql_connect(“localhost”, “username”, “password”);
mysql_select_db(“MyDatabase”);
$query = “select * from MyTable”;
$result = mysql_query($query);
$counts = mysql_num_fields($result);
for($count = 0; $count < $counts; $count++) {
$field = mysql_fetch_field($result, $count);
echo "

$field->name $field->type ($field->max_length)

“;
}
说明:
返回的对象共有12个对象属性:
name: 字段名
table: 字段所在的表
max_length:字段的最大长度
not_null: 如果字段不能为null,则为1,否则0
primary_key: 如果字段为主键,则为1,否则0
unique_key: 如果字段是唯一键,则为1, 否则0
multiple_key: 如果字段为非唯一,则为1,否则0
numeric: 如果字段为数值则为1,否则0
blob: 如果字段为BLOB则为1,否则为0
type: 字段的数据类型
unsigned: 如果字段为无符号数则为1,否则为0
zerofill: 如果字段为“零填充”则为1, 否则为0

19、mysql_num_fields()-获取查询的字段个数
格式:
integer mysql_num_fields(resource result_set)
例:
$query = “select id,name from MyTable order by name”;
$result = mysql_query($query);
echo “这个查询的字段数是:”.mysql_num_fields($result).”
“;

20、mysql_list_fields()-获取指定表的所有字段的字段名
格式:
resource mysql_list_fields (string database_name, string table_name [, resource link_id])
例:
$fields =mysql_list_fields(“MyDatabase”, “MyTable”);
echo “数据库MyDatabase中表MyTable的字段数: “.mysql_num_fields($fields).”
“;

21、mysql_field_flags()-获取指定的字段选项
格式:
string mysql_field_flags (resource result_set, integer field_offset)
例:
$query = “select id, name from MyTable order by name”;
$result = mysql_query($query);
$row=mysql_fetch_wor($row);

22、mysql_field_len()-获取指定的字段的最大长度
格式:
integer mysql_field_len (resource result_set, integer field_offset)
例:
$query = “select name from MyTable”;
$result = mysql_query($query);
$row = mysql_fetch_row($result);
echo mysql_field_len($result, 0).”
“;
说明:
如果mysql_field_len($reseult, 0) = 16777215
那么numer_format(mysql_field_len($result))等于16,777,215

23、mysql_field_name()-获取字段名
格式:
string mysql_field_name (resource result_set, int field_offset)
例:
$query = “select id as PKID, name from MyTable order by name”;
$result = mysql_query($query);
$row = mysql_fetch_row($result);
echo mysql_field_name($result, 0); // Result: PKID

24、mysql_field_type()-获取字段类型
格式:
string mysql_field_type (resource result_set, int field_offset)
例:
$query = “select id, name from MyTable order by name”;
$result = mysql_query($query);
$row = mysql_fetch_row($result);
echo mysql_field_type($result, 0); // Result: int

25、mysql_field_table()-获取字段所在表名
格式:
string mysql_field_table (resource result_set, int field_offset)
例:
$query = “select id as PKID, name from MyTable order by name”;
$result = mysql_query($query);
$row = mysql_fetch_row($result);
echo mysql_field_table($result, 0); // Result: MyTable

**********

CentOS–01 升级PHP5.2 ZendOptimizer3.3

@2010,05.30 22:46:56

centos5.3,centos5.4安装webmin默认的是 mysql 5.0,php5.1 我需要升级到mysql5.1和php5.2(禁止php5.3),怎么办?

给yum安装rpmforge:

http://wiki.centos.org/AdditionalResources/Repositories/RPMForge

yum list mysql php 发现都是最新版本了,看来标准的yum源没有更新

wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
wget http://rpms.famillecollet.com/el5.i386/remi-release-5-7.el5.remi.noarch.rpm
rpm -Uvh remi-release-5-7.el5.remi.noarch.rpm epel-release-5-3.noarch.rpm
yum –enablerepo=remi list mysql

发现可以升级到 mysql 5.1.44-1.el5.remi
yum –enablerepo=remi update mysql

发现需要把php也一并升级到 5.3,
而zend optimizer 目前不支持 Php5.3,于是需要禁止升级php5.3

vi /etc/yum.conf

最后一行增加

exclude=php*5.3*

然后再yum –enablerepo=remi update mysql,就看不到php的升级了

搞定:
[root@www.ctohome.com backup]# php -v 还是旧的5.1.6
PHP 5.1.6 (cli) (built: Jan 13 2010 17:13:05)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
with Zend Extension Manager v1.2.2, Copyright (c) 2003-2007, by Zend Technologies
with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies
[root@www.ctohome.com backup]# mysql -V 升级到5.1.44了
mysql Ver 14.14 Distrib 5.1.44, for redhat-linux-gnu (i686) using readline 5.1

升級mysql 5.1.41-1之後,請執行下列動作:
(1)將原有的/etc/my.cnf備份,將/etc/my.cnf.rpmnew改 為my.cnf
(2)升級table
mysql_upgrade -p
(3)自動修復table
mysqlcheck –all-databases –check-upgrade –auto-repair -p

找到一个yum源,有php5.2,方法如下:

http://www.webtatic.com/blog/2009/06/php-530-on-centos-5/

rpm –import http://repo.webtatic.com/yum/RPM-GPG-KEY-webtatic-andy
wget -P /etc/yum.repos.d/ http://repo.webtatic.com/yum/webtatic.repo
yum –enablerepo=webtatic list php
发现有php5.2 和 php5.3可以升级,
OK,我们vi /etc/yum.conf 禁止升级php5.3
vi /etc/yum.conf
最后一行增加
exclude=php*5.3*

或者:
yum –enablerepo=webtatic –exclude=php*5.3* list php

yum –enablerepo=webtatic –exclude=php*5.3* update -y php

[root@www.ctohome.com backup]# php -v 升级到5.2.12了,收工!
PHP 5.2.12 (cli) (built: Dec 17 2009 19:40:56)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
with Zend Extension Manager v1.2.2, Copyright (c) 2003-2007, by Zend Technologies
with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies

yum-allowdowngrade 可以降级的插件:

allow downgrade for yum:

yum install yum-allowdowngrade

Add a line to yum.conf:

showdupesfromrepos=1

After that list all php packages:

yum list php

If php 5.2.8 is available, remove new one:

yum remove php

and install an old one:

yum –allow-downgrade install php-5.2.8

*************************************************
ZendOptimizer
一、下载
wget http://downloads.zend.com/optimizer/3.3.3/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
tar -xzvf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
./ZendOptimizer-3.3.3-linux-glibc23-i386/install.sh

安装的时候,有个地方需要指定php.ini 目录

/usr/local/webserver/php/

另外,还有个选项是否有apache 选择no, 其它地方都是yes就行
二、重启PHP

/usr/local/webserver/php/sbin/php-fpm restart

留言 :, 更多...

ubuntu server — 05 配置通达OA

@2010,05.18 22:27:15

以前有转载过通达OA配置在Linux服务器,昨天自己实践下,
1、首先数据库要手工改成大些文件名,这个工作量最大,在FTP传到mysql目录下;
2、把在Windows下安装好MYOA用FTP(注意选二进制)上传到web目录下,配置好多域名;
3、修正好php.ini的参数 http://blog.putian.name/?p=438;(这步做好OA可以登录,菜单也正常,就是桌面出不来
4、桌面问题是因为字符集的关系,自己摸索了半天发现字符集问题只能改英文文件名,今天再看下按转载的文章有说的改成英文文件名即可,杯具…;

留言 :, , 更多...


 PHP « $xjj —> 小丶鸡丷鸡