FreeSbSD安装Nextcloud:
http://rasyid.net/2015/12/12/how-to-install-php-7-from-source-tar-gz-with-apache-on-freebsd-10-2/
https://project.altservice.com/issues/847
FreeBSD下用Port安装NextCloud:
https://www.freshports.org/www/nextcloud
========================================================================================
tail -f /data/htdocs/xdxp.cn/data/owncloud.log
Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set ‘always_populate_raw_post_data’ to ‘-1’ in php.ini and use the php://input stream instead. in Unknown on line 0
vi php.ini
将下面注释去掉,重启fpm
;always_populate_raw_post_data = -1
service php-fpm restart
=========================================================================================
文件目录 (/data/www/xdxp.cn/data) 可以被其他用户读取
请更改权限为 0770 以避免其他用户查看目录。
chmod -R 0770 /data/www/xdxp.cn/data
update-notification.js 里面是更新的JS文件,提示更新用的。
=========================================
最后从:8.2.11--V:wncloud-9.0.10,只留下config和data文件夹后,
安全及设置警告
#sudo -u www /usr/local/php/bin/php ./occ upgrade
升级出现:
由于 WebDAV 接口似乎被破坏,因此你的网页服务器没有正确地设置来允许文件同步。
Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our documentation. (List of invalid files… / Rescan…)
The "Strict-Transport-Security" HTTP header is not configured to at least "15768000" seconds. For enhanced security we recommend enabling HSTS as described in our security tips.
回退:8.2.11!!!
============================================================================================
Q:PHP 似乎没有设置好查询的系统环境变量。 用 getenv(\"PATH\") 测试只返回一个空值。
请检查PHP配置说明和服务器的 PHP 配置的 安装文档 ↗,使用 PHP-FPM 时尤其如此。
PHP模块'文件信息'丢失. 我们强烈建议启用此模块以便mime类型检测取得最佳结果.
[这个老外真是,搞不明白:]Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our documentation. (List of invalid files… / Rescan…)
A:etenv问题:在php-fpm.conf 中加上 env[PATH] = /usr/local/bin:/usr/bin:/bin:/usr/local/php/bin重启一下php-fpm就可以了
From:https://bbs.vpser.net/thread-13442-1-1.html
PHP模块'文件信息'丢失:自己参考:https://www.vpser.net/manage/lnmp-php-install-ext.html 安装上phpinfo模块
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "PHP模块'文件信息'丢失. 我们强烈建议启用此模块以便mime类型检测取得最佳结果."
Some files have not passed the integrity check. :估计可能是与禁用函数有关,按置顶帖去掉scandir函数试试
#grep -r "由于 WebDAV 接口似乎被破坏" ./
./core/l10n/zh_CN.json: "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "由于 WebDAV 接口似乎被破坏,因此你的网页服务器没有正确地设置来允许文件同步。",
./core/l10n/zh_CN.js: "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "由于 WebDAV 接口似乎被破坏,因此你的网页服务器没有正确地设置来允许文件同步。",
Your Web server is not yet set up properly to allow file synchronization
“Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken.”
有关这个问题,在ownCloud官方论坛有详细说明:How to fix CalDAV|CardDAV|WebDAV problems
From:https://www.orgleaf.com/2158.html
为进行避免较大的安装时超时,你可以在你的安装目录下运行下面的命令:
./occ upgrade#sudo -u www /usr/local/php/bin/php ./occ upgrade
SQLSTATE[08S01]: Communication link failure: 1153 Got a packet bigger than 'max_allowed_packet' bytes
Update failed
Maintenance mode is kept active
Reset log level
max_allowed_packet = 256K ==》max_allowed_packet = 8M
Resolve: http://blog.csdn.net/petter7226/article/details/51239901
步骤一,手动升级ownCloud到8.2.11:
rsync -a /data/htdocs/xdxp.cn/ /data/htdocs/xdxp.cn_bak`date +"%Y%m%d"`/
wget -P /data/htdocs "https://download.owncloud.org/community/owncloud-8.2.11.tar.bz2"
mkdir -p /data/htdocs/owncloud_latest
rm -rf /data/htdocs/owncloud_latest/*
tar -C /data/htdocs/owncloud_latest -xjf /data/htdocs/owncloud-8.2.11.tar.bz2
rsync --inplace -rtv /data/htdocs/owncloud_latest/owncloud/. /data/htdocs/xdxp.cn/.
chown -R www:www /data/htdocs/xdxp.cn
chmod -R 755 /data/htdocs/xdxp.cn
rm -rf /data/htdocs/owncloud-8.2.11.tar.bz2
rm -rf /data/htdocs/owncloud_latest/owncloud
步骤二,再再升最新版本是9.0.9,精简成脚本和浏览器访问,脚本收集如下:
rsync -a /data/htdocs/xdxp.cn/ /data/htdocs/xdxp.cn_bak`date +"%Y%m%d"`/
wget -P /data/htdocs "https://download.owncloud.org/community/owncloud-9.0.9.tar.bz2"
mkdir -p /data/htdocs/owncloud_latest
rm -rf /data/htdocs/owncloud_latest/*
tar -C /data/htdocs/owncloud_latest -xjf /data/htdocs/owncloud-9.0.9.tar.bz2
rsync --inplace -rtv /data/htdocs/owncloud_latest/owncloud/. /data/htdocs/xdxp.cn/.
chown -R www:www /data/htdocs/xdxp.cn
chmod -R 755 /data/htdocs/xdxp.cn
rm -rf /data/htdocs/owncloud-9.0.9.tar.bz2
rm -rf /data/htdocs/owncloud_latest/owncloud
=============================================
不用删除啥文件,一步一步按下面操作就是了:
第一大步:
rsync -a xdxp.cn/ xdxp.cn_bak`date +"%Y%m%d"`/
wget https://download.owncloud.org/community/owncloud-8.2.5.tar.bz2
mkdir owncloud_latest
文件夹存在后,则:
rm -Rf owncloud_latest/*
tar -C owncloud_latest -xjf owncloud-8.2.5.tar.bz2
[root@jackxiang htdocs]# rsync --inplace -rtv owncloud_latest/owncloud/. xdxp.cn/.
sent 99396465 bytes received 203530 bytes 4632557.91 bytes/sec
total size is 98794138 speedup is 0.99
chown -R www:www xdxp.cn
第二大步:
访问xdxp.cn 后会提示wait 一会儿,作下升级,后重新刷新即可。
刷新时会提示:
ownCloud 将会更新到版本 8.0.2。
在继续之前,请确认数据库、配置文件夹和数据文件夹已经备份。
为避免更大的安装演示,你能在你的安装目录下面运行这些命令:
./occ upgrade
———————————————————————————————
root@119.10.6.**:/data/htdocs/xdxp.cn# ./occ upgrade
PHP is configured to populate raw post data. Since PHP 5.6 this will lead to PHP throwing notices for perfectly valid code.
To fix this issue set <code>always_populate_raw_post_data</code> to <code>-1</code> in your php.ini
vi /usr/local/php/etc/php.ini
; Always populate the $HTTP_RAW_POST_DATA variable. PHP's default behavior is
; to disable this feature. If post reading is disabled through
; enable_post_data_reading, $HTTP_RAW_POST_DATA is *NOT* populated.
; http://php.net/always-populate-raw-post-data
;always_populate_raw_post_data = On //打开这个
==========================================================================
打这个有啥用呢,查了一这个always_populate_raw_post_data和这个WebDAV有关:
允许在 PHP 脚本中处理 WebDAV 的 HTTP 请求(例如 PROPFIND,PROPPATCH,MOVE,COPY 等)。此选项在 PHP 4.3.2 以后便不存在了。如果要取得这些请求的 POST 数据,也要设定 always_populate_raw_post_data。
WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议。它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可直接对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。
附录,升级后代码有兼容性的问题:
==> php-error.log <==
[10-Apr-2015 02:42:49 UTC] PHP Fatal error: Class OCA\Contacts\Share\Addressbook contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (OCP\Share_Backend::isShareTypeAllowed) in /data/htdocs/xdxp.cn/apps/contacts/lib/share/addressbook.php on line 1
成功解决办法来源链接:
https://datenfahrt.org/wiki/blog/2015/03/owncloud-update-notizen-7.0.4-to-8.0.2
操作步骤如下:
实践如下后,显示正常,升级成功(这一块owncloud感觉好像在兼容性上不是太好):
mysql> desc oc_appconfig;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| appid | varchar(32) | NO | PRI | | |
| configkey | varchar(64) | NO | PRI | | |
| configvalue | longtext | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
$ mysql owncloud-db-name -u username -p
mysql> update oc_appconfig set configvalue="no" WHERE appid="contacts" AND configkey="enabled";
mysql> update oc_appconfig set configvalue="no" WHERE appid="calendar" AND configkey="enabled";
mysql> update oc_appconfig set configvalue="no" WHERE appid="contacts" AND configkey="enabled";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update oc_appconfig set configvalue="no" WHERE appid="calendar" AND configkey="enabled";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
ownCloud是一款保持更新的开源私有云系统,基于PHP5开发的。支持SQLite、MySQL、Oracle以及PostgreSQL等数据库。本文介绍的是如何手动升级的步骤。
请务必遵循以下原则升级:
1、备份原文件夹;
2、停用所有第三方apps;
3、解压最新版的安装包,覆盖到原文件夹中;
4、确认所有的文件和文件夹权限是正确的;
5、打开ownCloud首页,升级自动进行。
假设将ownCloud安装在web根目录下的./ownCloud/文件夹中,SSH登录,进入web根目录后按照如下步骤进行升级:
1、使用rsync命令的存档模式备份./ownCloud/文件夹(该模式可以保留文件权限、拥有者、时间戳等信息),执行命令如下:
rsync -a owncloud/ owncloud_bkp`date +"%Y%m%d"`/
2、官网下载最新版ownCloud,执行命令如下:
wget http://download.owncloud.org/community/owncloud-latest.tar.bz2
3、将最新版的压缩包解压到./owncloud_latest/文件夹,执行命令如下:
mkdir owncloud_latest
tar -C owncloud_latest -xjf owncloud-latest.tar.bz2
4、使用rsync命令覆盖./ownCloud/文件夹,执行命令如下:
rsync --inplace -rtv owncloud_latest/owncloud/ owncloud/
5、删除安装包(安全起见),执行命令如下:
rm -rf owncloud-latest.tar.bz2 owncloud_latest/
注意事项:
1、如果你已经上传了大量的数据,请在升级时确认硬盘空间是否足够;
2、在后台点击升级,只会下载最新版安装包到backup文件夹,并不会自动安装,同时会将config.php中的maintenance mode修改为true。
这就会导致一个错误提示“OwnCloud is in maintenance mode”,因此在手动升级后,需要将./owncloud/config/config.php中的maintenance mode从true改为false,再打开首页才能顺利升级;
3、升级到最新版的ownCloud后,经过我的测试(测试环境:CentOS6.4_x86, LAMP一键安装包),是可以很好的支持中文的(目录名和文件名皆可)。
参考原文:http://doc.owncloud.org/server/5.0/admin_manual/maintenance/update.html
http://rasyid.net/2015/12/12/how-to-install-php-7-from-source-tar-gz-with-apache-on-freebsd-10-2/
https://project.altservice.com/issues/847
FreeBSD下用Port安装NextCloud:
https://www.freshports.org/www/nextcloud
========================================================================================
tail -f /data/htdocs/xdxp.cn/data/owncloud.log
Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set ‘always_populate_raw_post_data’ to ‘-1’ in php.ini and use the php://input stream instead. in Unknown on line 0
vi php.ini
将下面注释去掉,重启fpm
;always_populate_raw_post_data = -1
service php-fpm restart
=========================================================================================
文件目录 (/data/www/xdxp.cn/data) 可以被其他用户读取
请更改权限为 0770 以避免其他用户查看目录。
chmod -R 0770 /data/www/xdxp.cn/data
update-notification.js 里面是更新的JS文件,提示更新用的。
=========================================
最后从:8.2.11--V:wncloud-9.0.10,只留下config和data文件夹后,
安全及设置警告
#sudo -u www /usr/local/php/bin/php ./occ upgrade
升级出现:
由于 WebDAV 接口似乎被破坏,因此你的网页服务器没有正确地设置来允许文件同步。
Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our documentation. (List of invalid files… / Rescan…)
The "Strict-Transport-Security" HTTP header is not configured to at least "15768000" seconds. For enhanced security we recommend enabling HSTS as described in our security tips.
回退:8.2.11!!!
============================================================================================
Q:PHP 似乎没有设置好查询的系统环境变量。 用 getenv(\"PATH\") 测试只返回一个空值。
请检查PHP配置说明和服务器的 PHP 配置的 安装文档 ↗,使用 PHP-FPM 时尤其如此。
PHP模块'文件信息'丢失. 我们强烈建议启用此模块以便mime类型检测取得最佳结果.
[这个老外真是,搞不明白:]Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our documentation. (List of invalid files… / Rescan…)
A:etenv问题:在php-fpm.conf 中加上 env[PATH] = /usr/local/bin:/usr/bin:/bin:/usr/local/php/bin重启一下php-fpm就可以了
From:https://bbs.vpser.net/thread-13442-1-1.html
PHP模块'文件信息'丢失:自己参考:https://www.vpser.net/manage/lnmp-php-install-ext.html 安装上phpinfo模块
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "PHP模块'文件信息'丢失. 我们强烈建议启用此模块以便mime类型检测取得最佳结果."
Some files have not passed the integrity check. :估计可能是与禁用函数有关,按置顶帖去掉scandir函数试试
#grep -r "由于 WebDAV 接口似乎被破坏" ./
./core/l10n/zh_CN.json: "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "由于 WebDAV 接口似乎被破坏,因此你的网页服务器没有正确地设置来允许文件同步。",
./core/l10n/zh_CN.js: "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "由于 WebDAV 接口似乎被破坏,因此你的网页服务器没有正确地设置来允许文件同步。",
Your Web server is not yet set up properly to allow file synchronization
“Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken.”
有关这个问题,在ownCloud官方论坛有详细说明:How to fix CalDAV|CardDAV|WebDAV problems
From:https://www.orgleaf.com/2158.html
为进行避免较大的安装时超时,你可以在你的安装目录下运行下面的命令:
./occ upgrade#sudo -u www /usr/local/php/bin/php ./occ upgrade
SQLSTATE[08S01]: Communication link failure: 1153 Got a packet bigger than 'max_allowed_packet' bytes
Update failed
Maintenance mode is kept active
Reset log level
max_allowed_packet = 256K ==》max_allowed_packet = 8M
Resolve: http://blog.csdn.net/petter7226/article/details/51239901
步骤一,手动升级ownCloud到8.2.11:
rsync -a /data/htdocs/xdxp.cn/ /data/htdocs/xdxp.cn_bak`date +"%Y%m%d"`/
wget -P /data/htdocs "https://download.owncloud.org/community/owncloud-8.2.11.tar.bz2"
mkdir -p /data/htdocs/owncloud_latest
rm -rf /data/htdocs/owncloud_latest/*
tar -C /data/htdocs/owncloud_latest -xjf /data/htdocs/owncloud-8.2.11.tar.bz2
rsync --inplace -rtv /data/htdocs/owncloud_latest/owncloud/. /data/htdocs/xdxp.cn/.
chown -R www:www /data/htdocs/xdxp.cn
chmod -R 755 /data/htdocs/xdxp.cn
rm -rf /data/htdocs/owncloud-8.2.11.tar.bz2
rm -rf /data/htdocs/owncloud_latest/owncloud
步骤二,再再升最新版本是9.0.9,精简成脚本和浏览器访问,脚本收集如下:
rsync -a /data/htdocs/xdxp.cn/ /data/htdocs/xdxp.cn_bak`date +"%Y%m%d"`/
wget -P /data/htdocs "https://download.owncloud.org/community/owncloud-9.0.9.tar.bz2"
mkdir -p /data/htdocs/owncloud_latest
rm -rf /data/htdocs/owncloud_latest/*
tar -C /data/htdocs/owncloud_latest -xjf /data/htdocs/owncloud-9.0.9.tar.bz2
rsync --inplace -rtv /data/htdocs/owncloud_latest/owncloud/. /data/htdocs/xdxp.cn/.
chown -R www:www /data/htdocs/xdxp.cn
chmod -R 755 /data/htdocs/xdxp.cn
rm -rf /data/htdocs/owncloud-9.0.9.tar.bz2
rm -rf /data/htdocs/owncloud_latest/owncloud
=============================================
不用删除啥文件,一步一步按下面操作就是了:
第一大步:
rsync -a xdxp.cn/ xdxp.cn_bak`date +"%Y%m%d"`/
wget https://download.owncloud.org/community/owncloud-8.2.5.tar.bz2
mkdir owncloud_latest
文件夹存在后,则:
rm -Rf owncloud_latest/*
tar -C owncloud_latest -xjf owncloud-8.2.5.tar.bz2
[root@jackxiang htdocs]# rsync --inplace -rtv owncloud_latest/owncloud/. xdxp.cn/.
sent 99396465 bytes received 203530 bytes 4632557.91 bytes/sec
total size is 98794138 speedup is 0.99
chown -R www:www xdxp.cn
第二大步:
访问xdxp.cn 后会提示wait 一会儿,作下升级,后重新刷新即可。
刷新时会提示:
ownCloud 将会更新到版本 8.0.2。
在继续之前,请确认数据库、配置文件夹和数据文件夹已经备份。
为避免更大的安装演示,你能在你的安装目录下面运行这些命令:
./occ upgrade
———————————————————————————————
root@119.10.6.**:/data/htdocs/xdxp.cn# ./occ upgrade
PHP is configured to populate raw post data. Since PHP 5.6 this will lead to PHP throwing notices for perfectly valid code.
To fix this issue set <code>always_populate_raw_post_data</code> to <code>-1</code> in your php.ini
vi /usr/local/php/etc/php.ini
; Always populate the $HTTP_RAW_POST_DATA variable. PHP's default behavior is
; to disable this feature. If post reading is disabled through
; enable_post_data_reading, $HTTP_RAW_POST_DATA is *NOT* populated.
; http://php.net/always-populate-raw-post-data
;always_populate_raw_post_data = On //打开这个
==========================================================================
打这个有啥用呢,查了一这个always_populate_raw_post_data和这个WebDAV有关:
允许在 PHP 脚本中处理 WebDAV 的 HTTP 请求(例如 PROPFIND,PROPPATCH,MOVE,COPY 等)。此选项在 PHP 4.3.2 以后便不存在了。如果要取得这些请求的 POST 数据,也要设定 always_populate_raw_post_data。
WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议。它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可直接对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。
附录,升级后代码有兼容性的问题:
==> php-error.log <==
[10-Apr-2015 02:42:49 UTC] PHP Fatal error: Class OCA\Contacts\Share\Addressbook contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (OCP\Share_Backend::isShareTypeAllowed) in /data/htdocs/xdxp.cn/apps/contacts/lib/share/addressbook.php on line 1
成功解决办法来源链接:
https://datenfahrt.org/wiki/blog/2015/03/owncloud-update-notizen-7.0.4-to-8.0.2
操作步骤如下:
实践如下后,显示正常,升级成功(这一块owncloud感觉好像在兼容性上不是太好):
mysql> desc oc_appconfig;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| appid | varchar(32) | NO | PRI | | |
| configkey | varchar(64) | NO | PRI | | |
| configvalue | longtext | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
$ mysql owncloud-db-name -u username -p
mysql> update oc_appconfig set configvalue="no" WHERE appid="contacts" AND configkey="enabled";
mysql> update oc_appconfig set configvalue="no" WHERE appid="calendar" AND configkey="enabled";
mysql> update oc_appconfig set configvalue="no" WHERE appid="contacts" AND configkey="enabled";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update oc_appconfig set configvalue="no" WHERE appid="calendar" AND configkey="enabled";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
ownCloud是一款保持更新的开源私有云系统,基于PHP5开发的。支持SQLite、MySQL、Oracle以及PostgreSQL等数据库。本文介绍的是如何手动升级的步骤。
请务必遵循以下原则升级:
1、备份原文件夹;
2、停用所有第三方apps;
3、解压最新版的安装包,覆盖到原文件夹中;
4、确认所有的文件和文件夹权限是正确的;
5、打开ownCloud首页,升级自动进行。
假设将ownCloud安装在web根目录下的./ownCloud/文件夹中,SSH登录,进入web根目录后按照如下步骤进行升级:
1、使用rsync命令的存档模式备份./ownCloud/文件夹(该模式可以保留文件权限、拥有者、时间戳等信息),执行命令如下:
rsync -a owncloud/ owncloud_bkp`date +"%Y%m%d"`/
2、官网下载最新版ownCloud,执行命令如下:
wget http://download.owncloud.org/community/owncloud-latest.tar.bz2
3、将最新版的压缩包解压到./owncloud_latest/文件夹,执行命令如下:
mkdir owncloud_latest
tar -C owncloud_latest -xjf owncloud-latest.tar.bz2
4、使用rsync命令覆盖./ownCloud/文件夹,执行命令如下:
rsync --inplace -rtv owncloud_latest/owncloud/ owncloud/
5、删除安装包(安全起见),执行命令如下:
rm -rf owncloud-latest.tar.bz2 owncloud_latest/
注意事项:
1、如果你已经上传了大量的数据,请在升级时确认硬盘空间是否足够;
2、在后台点击升级,只会下载最新版安装包到backup文件夹,并不会自动安装,同时会将config.php中的maintenance mode修改为true。
这就会导致一个错误提示“OwnCloud is in maintenance mode”,因此在手动升级后,需要将./owncloud/config/config.php中的maintenance mode从true改为false,再打开首页才能顺利升级;
3、升级到最新版的ownCloud后,经过我的测试(测试环境:CentOS6.4_x86, LAMP一键安装包),是可以很好的支持中文的(目录名和文件名皆可)。
参考原文:http://doc.owncloud.org/server/5.0/admin_manual/maintenance/update.html
解析UC/OS-II时钟中断技术
阅读全文
阅读全文
警告:隐式声明与内建函数'exit'不兼容解决方案
Unix/LinuxC技术 jack 2014-7-31 16:56
最近一直在看《Linux程序设计(第3版)》,照着书上的代码原封不动地敲上去,编译后就出现了à警告:隐式声明与内建函数’exit’不兼容。
警告:隐式声明与内建函数‘exit’不兼容
原因其实很简单了,没有把stdlib.h包含进来,加上就没问题了。后来google搜索的时候发现网上很多人有这个问题,今天来记下这个问题的解决方案。
以此类推,编译后出现警告:隐式声明与内建函数’XXX’不兼容的问题所在都是因为没有包含相应的头文件,加上就OK!
来自:http://blog.csdn.net/monkey_d_meng/article/details/5565667
警告:隐式声明与内建函数‘exit’不兼容
原因其实很简单了,没有把stdlib.h包含进来,加上就没问题了。后来google搜索的时候发现网上很多人有这个问题,今天来记下这个问题的解决方案。
以此类推,编译后出现警告:隐式声明与内建函数’XXX’不兼容的问题所在都是因为没有包含相应的头文件,加上就OK!
来自:http://blog.csdn.net/monkey_d_meng/article/details/5565667
为嘛子要慎用mysql的enum字段?
Php/Js/Shell/Go jack 2014-7-30 16:17
背景:时下都流行enum类型的使用tinyint,那enum就真没有用的价值了么?
PHP低级编程的兄弟是这样来看这个问题的,我作下笔录如下,期望能客观的理解这个enum字段的优点及缺点:
膘哥观点:
enum有优点。但个人觉得。。。缺点更多,客观的讲:优点主要是在建数据 库的时候就可以把一些值给规范好。缺点是。。enum不适合PHP。主要是PHP是弱类型,如:你insert into ..... set a= 1,你没法知道你是想 a= '1' 还是 a= 1(a='1'是插入值1,a=1是插入enum的第一个值,尤其php弱类型的,如果int的,很少有人在sql里加双引号。),这是PHP和mysql 在使用enum 最大的问题。所以。。安心点啦。干脆点直接tinyint。
单曲观点:
我觉得没什么优点,对数字型的enum,简直就是梦魇,boolean tinyint(1) 0,1 status tinyint(1) 1,2,3,4,5,6..tinyint欢淫你~~。如:audit_result enum(1,2,3),set audit_result = 1;...容易出现膘哥所说的混淆。
简单观点:
少用,一般都是用tinyint替代。
天枫观点:
我觉得除了状态直观 没什么优点,我一般直接int,tinyint([1or2or3]) 到底有啥区别?(后面会简单探讨下,这里面的1or2or3区别。)
中庸观点:
a=1是插入enum的第一个值,尤其php弱类型的,如果int的,很少有人在sql里加双引号,基本上是不加引号的。
竖琴螺观点:
六种情况就:tinyint(1) -1,-2,1,2,3,4
上面各种观点重点集中在PHP这种弱类型语言对引号不重视,
程序员不写容易引起插入的语句不是自己想要的结果的问题,
容易出现int时没有用引号导致插入了新值而不是定的那个值:
结论:要插入enum的值,字段必须加引号,不加引号当然是数字,数字就是key,不是value。
规劝:
1)enum是整型这样的错误很容易发生,尤其是php弱类型的,一般新来一个人,没注意enum类型,就会犯错。
2)数据库说明清楚的话,或者可选择的全是字符串的话,还没什么,但是里面有数字,难免有新手犯错,养成加引号的习惯很重要。
最终结论:
历史原因,要把enum改成tinyint程序改动太大了,用了的没必要改·~,以后新建的时候,尽量使用tinyint就好。
这种字段的重复内容过多的,索引建不建,关系不大,这种在mysql叫索引的势太低,其查询效果不太好:(英文是这么翻译的:https://jackxiang.com/post/1405/)。
————————————————————————————————————————————————————————————————————
tinyint(1)和tinyint(4)一样的,都是-127到128或者0到256。unsigned属性全是正,和c语言unsigned int有点类似:
tinyint(1) -128 ~ 127
tinyint(1) unsigned 0 ~ 255
为何表示的最大正数比最小负数的绝对值少1呢?
第一位是符号位,1表示负数
所以负数可以到128,正数只能到127
-128正127
如:0111 1111 正数 ,负数 1111 1111
提问:
Mysql里int(1)和int(11)差别很大的,mysql的int,有个属性 ,UNSIGNED ZEROFILL 后面的ZEROFILL,就是有定义的位数不够则用零补齐对齐一下(这儿可能涉及到索引的性能罢):int, 长度(M)=5, 属性=UNSIGNED ZEROFILL(无符号,用0来填充位数),00001,00002。
但这个tinyint呢,tinyint(1)和tinyint(4)一样的?
看这文章后:http://blog.csdn.net/lysygyy/article/details/5983433
我估计:mysql这块对一个字节不像int这种四个字节要进行对其前部分进行部分字节索引,如果说tinyint(1)和tinyint(4)是一样的表示范围情况下,但mysql对tinyint数字长度位数作了可设置的限定,从理论上说其存在硬盘里的字节是不一样才是合乎逻辑的,这块估计还是为了对字节进行对齐方便索引等,以提升效率为主罢,l如:ike keyword% 索引有效,如果统一对齐,索引效果会不会更好呢?我也只是猜测。
————————————————————————————————————————————————————————————————————
在网上找了下这个enum的mysql的大体实现如下:
一)enum的存储原理我仔细查看了下手册。是这样的:
在建立这个字段时,我们会给他规定一个范围比如enum('a','b','c'),这时mysql内部会建立一张hash结构的map表,类似:0000 -> a,0001 -> b,0002 -> c。
当我插入一条数据,此字段的值位a或b或c时,他存储在里面的不是这个字符,而是对应他的索引,也就是那个0000或0001或0002。
同样,enum在mysql手册上的说明:
ENUM('value1','value2',...)
1或2个字节,取决于枚举值的个数(最多65,535个值)
除非enum的个数超过了一定数量,否则他所占的存储空间也总是1字节。
二)tinyint:
类型 字节 最小值 最大值
(带符号的/无符号的) (带符号的/无符号的)
TINYINT 1 -128 127
他的最小存储所占空间也是1字节。
最后,Enum,既然要用它,就不必要使用什么0,1,2来代替实际的字符串了。甚至中文字符串。他并不会对数据库性能进行多余开销。因为对于它来说,你使用'0','1','2'和'张三','李四','王五'数据表所占的存储空间一样。但是考虑到我们实际应用时数据需要从db服务器回传到web app,所以在网络传输时,当然还是尽可能的传输小数据比较好。所以如果很在意这些,还是不用它好了。
mysql中关于bit,enum,tinyint三种数据类型的差别 :
http://blog.csdn.net/shadowsniper/article/details/7071004
慎用mysql的enum字段:
http://www.neatstudio.com/show-1498-1.shtml
PHP低级编程的兄弟是这样来看这个问题的,我作下笔录如下,期望能客观的理解这个enum字段的优点及缺点:
膘哥观点:
enum有优点。但个人觉得。。。缺点更多,客观的讲:优点主要是在建数据 库的时候就可以把一些值给规范好。缺点是。。enum不适合PHP。主要是PHP是弱类型,如:你insert into ..... set a= 1,你没法知道你是想 a= '1' 还是 a= 1(a='1'是插入值1,a=1是插入enum的第一个值,尤其php弱类型的,如果int的,很少有人在sql里加双引号。),这是PHP和mysql 在使用enum 最大的问题。所以。。安心点啦。干脆点直接tinyint。
单曲观点:
我觉得没什么优点,对数字型的enum,简直就是梦魇,boolean tinyint(1) 0,1 status tinyint(1) 1,2,3,4,5,6..tinyint欢淫你~~。如:audit_result enum(1,2,3),set audit_result = 1;...容易出现膘哥所说的混淆。
简单观点:
少用,一般都是用tinyint替代。
天枫观点:
我觉得除了状态直观 没什么优点,我一般直接int,tinyint([1or2or3]) 到底有啥区别?(后面会简单探讨下,这里面的1or2or3区别。)
中庸观点:
a=1是插入enum的第一个值,尤其php弱类型的,如果int的,很少有人在sql里加双引号,基本上是不加引号的。
竖琴螺观点:
六种情况就:tinyint(1) -1,-2,1,2,3,4
上面各种观点重点集中在PHP这种弱类型语言对引号不重视,
程序员不写容易引起插入的语句不是自己想要的结果的问题,
容易出现int时没有用引号导致插入了新值而不是定的那个值:
结论:要插入enum的值,字段必须加引号,不加引号当然是数字,数字就是key,不是value。
规劝:
1)enum是整型这样的错误很容易发生,尤其是php弱类型的,一般新来一个人,没注意enum类型,就会犯错。
2)数据库说明清楚的话,或者可选择的全是字符串的话,还没什么,但是里面有数字,难免有新手犯错,养成加引号的习惯很重要。
最终结论:
历史原因,要把enum改成tinyint程序改动太大了,用了的没必要改·~,以后新建的时候,尽量使用tinyint就好。
这种字段的重复内容过多的,索引建不建,关系不大,这种在mysql叫索引的势太低,其查询效果不太好:(英文是这么翻译的:https://jackxiang.com/post/1405/)。
————————————————————————————————————————————————————————————————————
tinyint(1)和tinyint(4)一样的,都是-127到128或者0到256。unsigned属性全是正,和c语言unsigned int有点类似:
tinyint(1) -128 ~ 127
tinyint(1) unsigned 0 ~ 255
为何表示的最大正数比最小负数的绝对值少1呢?
第一位是符号位,1表示负数
所以负数可以到128,正数只能到127
-128正127
如:0111 1111 正数 ,负数 1111 1111
提问:
Mysql里int(1)和int(11)差别很大的,mysql的int,有个属性 ,UNSIGNED ZEROFILL 后面的ZEROFILL,就是有定义的位数不够则用零补齐对齐一下(这儿可能涉及到索引的性能罢):int, 长度(M)=5, 属性=UNSIGNED ZEROFILL(无符号,用0来填充位数),00001,00002。
但这个tinyint呢,tinyint(1)和tinyint(4)一样的?
看这文章后:http://blog.csdn.net/lysygyy/article/details/5983433
我估计:mysql这块对一个字节不像int这种四个字节要进行对其前部分进行部分字节索引,如果说tinyint(1)和tinyint(4)是一样的表示范围情况下,但mysql对tinyint数字长度位数作了可设置的限定,从理论上说其存在硬盘里的字节是不一样才是合乎逻辑的,这块估计还是为了对字节进行对齐方便索引等,以提升效率为主罢,l如:ike keyword% 索引有效,如果统一对齐,索引效果会不会更好呢?我也只是猜测。
————————————————————————————————————————————————————————————————————
在网上找了下这个enum的mysql的大体实现如下:
一)enum的存储原理我仔细查看了下手册。是这样的:
在建立这个字段时,我们会给他规定一个范围比如enum('a','b','c'),这时mysql内部会建立一张hash结构的map表,类似:0000 -> a,0001 -> b,0002 -> c。
当我插入一条数据,此字段的值位a或b或c时,他存储在里面的不是这个字符,而是对应他的索引,也就是那个0000或0001或0002。
同样,enum在mysql手册上的说明:
ENUM('value1','value2',...)
1或2个字节,取决于枚举值的个数(最多65,535个值)
除非enum的个数超过了一定数量,否则他所占的存储空间也总是1字节。
二)tinyint:
类型 字节 最小值 最大值
(带符号的/无符号的) (带符号的/无符号的)
TINYINT 1 -128 127
他的最小存储所占空间也是1字节。
最后,Enum,既然要用它,就不必要使用什么0,1,2来代替实际的字符串了。甚至中文字符串。他并不会对数据库性能进行多余开销。因为对于它来说,你使用'0','1','2'和'张三','李四','王五'数据表所占的存储空间一样。但是考虑到我们实际应用时数据需要从db服务器回传到web app,所以在网络传输时,当然还是尽可能的传输小数据比较好。所以如果很在意这些,还是不用它好了。
mysql中关于bit,enum,tinyint三种数据类型的差别 :
http://blog.csdn.net/shadowsniper/article/details/7071004
慎用mysql的enum字段:
http://www.neatstudio.com/show-1498-1.shtml
http://www.doc88.com/p-118691153106.html
背景:最近vps上安了PHP Version 5.4.30,没有加速器...性能不高,加上vps硬件不行,还得加上一个ea啥的,apc,有一个lpcache.so不错,安上。
PHP5.5开始内置了Zend OPcache的缓存系统,这个系统在5.2-5.4下也是可以使用的。经过测试,在php5.4下的加速性能明显,效果比5.2+ea还要好,在此推荐安装。
CentOS6中yum源中已经有git的版本了,可以直接使用yum源进行安装
yum -y install git
编译步骤:
git clone git://github.com/zend-dev/ZendOptimizerPlus.git
cd ZendOptimizerPlus
$PHP_DIR/bin/phpize
./configure \
--with-php-config=$PHP_DIR/bin/php-config
make && make install
./configure --with-php-config=/usr/local/php/bin/php-config
配置步骤:
在 php.ini 内增加
zend_extension=/...full path.../opcache.so
下面这段是官方推荐的配置参数,可以更加提升性能,建议使用:
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
另:PHP5.5下只需要编译时增加 --enable-opcache 参数即可:
静态编译配置不配置无所谓了?
PHP是这样的:
[root@jackxiang ~]# php -v
PHP 5.5.15 (cli) (built: Aug 10 2014 15:18:31)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
但好像用那个下载的php统计好像说是没有发现这个opcache,奇了怪了,呵。
ocp.php?FILES=1&GROUP=2&SORT=3
出现:Opcache not detected?
原因:
配置好这个opcache后没有重启php-fpm,所以,重启动好了。
[root@jackxiang ~]# php -m|grep OP
Zend OPcache
Zend OPcache
————————————————————————————————————————
出现:You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
如果想看到底命中多少百分比的opcache,有个php可以运行下:
https://gist.github.com/ck-on/4959032/download#
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
说需要安装re2c
执行以下命令
wget http://sourceforge.net/projects/re2c/files/re2c/0.13.5/re2c-0.13.5.tar.gz/download
tar -zxvf re2c-0.13.5.tar.gz
cd re2c-0.13.5
./configure && make && make install
推荐使用:Zend OPcache 控制面板:
https://gist.github.com/ck-on/4959032
来自:http://chen.so/post/71/
http://www.laogui.com/Zend-Opcache
新一代 PHP 加速插件 Zend Opcache:
http://www.laogui.com/Zend-Opcache
最后,
效果还是有的,这个数值表现出的效果是相当的明显:
Cache hits 15338969
Cache misses 294
————————————————————————————
op于ea的性能对比:http://dafengzi.com/?p=4
是否可以一起安,更牛x呀,哈哈:Add Time:2014-08-20
————————————PHP高级研究群———————————————
PHP里的Zend的OPcache 和 eaccelerator 同时使用是不是效果更好?
上午 10:49:58
啥也不会
14/8/20 星期三 上午 10:49:58
会冲突
七夜
14/8/20 星期三 上午 10:51:58
直接opcache就行
————————————低级PHP码农———————————————
PHP里的Zend的OPcache 和 eaccelerator 同时使用是不是效果更好?
【活跃】[沪部]-莫莫
14/8/20 星期三 上午 10:40:19
胡扯的吧
【活跃】[沪部]-莫莫
14/8/20 星期三 上午 10:40:28
opcache 选一个吧
【活跃】[沪部]-莫莫
14/8/20 星期三 上午 10:40:33
选opcache 吧
上午 10:40:50
【活跃】[沪部]-莫莫
14/8/20 星期三 上午 10:40:50
两个功能重叠了 你觉得好吗?【
听说高版本的PHP连Memcache都自带了,莫莫给了一文章:
http://blog.csdn.net/zqtsx/article/details/23942605
摘录片段:
安装MEMCACHE,和OPCACHE扩展
(因为php5.5X+版本已经内置了memcache和opcache扩展,所以不必另行下载,即可采用以下方式进行编译)
1.memcache
如果需要为php增加memcache扩展,按如下方法进行:
cd /usr/local/php/bin
./pecl install memcache
安装时会提示是否开启session支持,根据需要输入no 或者 yes,安装后路径如下:
/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/memcache.so
需要手动配置到php.ini中,增加如下内容,即表示启用memcache扩展:
extension=memcache.so
保存后,重启Apache,或PHP-FPM。
/usr/local/php/bin/pecl install memcache
Installing shared extensions: /tmp/pear/temp/pear-build-root9N8MRR/install-memcache-2.2.7/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/
一阵编译......
Build process completed successfully
Installing '/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/memcache.so'
install ok: channel://pecl.php.net/memcache-2.2.7
configuration option "php_ini" is not set to php.ini location
You should add "extension=memcache.so" to php.ini
service php-fpm restart
看样子,这个pecl是想做一个类linux的yum 或apt-get啊。
PHP5.5开始内置了Zend OPcache的缓存系统,这个系统在5.2-5.4下也是可以使用的。经过测试,在php5.4下的加速性能明显,效果比5.2+ea还要好,在此推荐安装。
CentOS6中yum源中已经有git的版本了,可以直接使用yum源进行安装
yum -y install git
编译步骤:
git clone git://github.com/zend-dev/ZendOptimizerPlus.git
cd ZendOptimizerPlus
$PHP_DIR/bin/phpize
./configure \
--with-php-config=$PHP_DIR/bin/php-config
make && make install
./configure --with-php-config=/usr/local/php/bin/php-config
配置步骤:
在 php.ini 内增加
zend_extension=/...full path.../opcache.so
下面这段是官方推荐的配置参数,可以更加提升性能,建议使用:
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
另:PHP5.5下只需要编译时增加 --enable-opcache 参数即可:
静态编译配置不配置无所谓了?
PHP是这样的:
[root@jackxiang ~]# php -v
PHP 5.5.15 (cli) (built: Aug 10 2014 15:18:31)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
但好像用那个下载的php统计好像说是没有发现这个opcache,奇了怪了,呵。
ocp.php?FILES=1&GROUP=2&SORT=3
出现:Opcache not detected?
原因:
配置好这个opcache后没有重启php-fpm,所以,重启动好了。
[root@jackxiang ~]# php -m|grep OP
Zend OPcache
Zend OPcache
————————————————————————————————————————
出现:You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
如果想看到底命中多少百分比的opcache,有个php可以运行下:
https://gist.github.com/ck-on/4959032/download#
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
说需要安装re2c
执行以下命令
wget http://sourceforge.net/projects/re2c/files/re2c/0.13.5/re2c-0.13.5.tar.gz/download
tar -zxvf re2c-0.13.5.tar.gz
cd re2c-0.13.5
./configure && make && make install
推荐使用:Zend OPcache 控制面板:
https://gist.github.com/ck-on/4959032
来自:http://chen.so/post/71/
http://www.laogui.com/Zend-Opcache
新一代 PHP 加速插件 Zend Opcache:
http://www.laogui.com/Zend-Opcache
最后,
效果还是有的,这个数值表现出的效果是相当的明显:
Cache hits 15338969
Cache misses 294
————————————————————————————
op于ea的性能对比:http://dafengzi.com/?p=4
是否可以一起安,更牛x呀,哈哈:Add Time:2014-08-20
————————————PHP高级研究群———————————————
PHP里的Zend的OPcache 和 eaccelerator 同时使用是不是效果更好?
上午 10:49:58
啥也不会
14/8/20 星期三 上午 10:49:58
会冲突
七夜
14/8/20 星期三 上午 10:51:58
直接opcache就行
————————————低级PHP码农———————————————
PHP里的Zend的OPcache 和 eaccelerator 同时使用是不是效果更好?
【活跃】[沪部]-莫莫
14/8/20 星期三 上午 10:40:19
胡扯的吧
【活跃】[沪部]-莫莫
14/8/20 星期三 上午 10:40:28
opcache 选一个吧
【活跃】[沪部]-莫莫
14/8/20 星期三 上午 10:40:33
选opcache 吧
上午 10:40:50
【活跃】[沪部]-莫莫
14/8/20 星期三 上午 10:40:50
两个功能重叠了 你觉得好吗?【
听说高版本的PHP连Memcache都自带了,莫莫给了一文章:
http://blog.csdn.net/zqtsx/article/details/23942605
摘录片段:
安装MEMCACHE,和OPCACHE扩展
(因为php5.5X+版本已经内置了memcache和opcache扩展,所以不必另行下载,即可采用以下方式进行编译)
1.memcache
如果需要为php增加memcache扩展,按如下方法进行:
cd /usr/local/php/bin
./pecl install memcache
安装时会提示是否开启session支持,根据需要输入no 或者 yes,安装后路径如下:
/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/memcache.so
需要手动配置到php.ini中,增加如下内容,即表示启用memcache扩展:
extension=memcache.so
保存后,重启Apache,或PHP-FPM。
/usr/local/php/bin/pecl install memcache
Installing shared extensions: /tmp/pear/temp/pear-build-root9N8MRR/install-memcache-2.2.7/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/
一阵编译......
Build process completed successfully
Installing '/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/memcache.so'
install ok: channel://pecl.php.net/memcache-2.2.7
configuration option "php_ini" is not set to php.ini location
You should add "extension=memcache.so" to php.ini
service php-fpm restart
看样子,这个pecl是想做一个类linux的yum 或apt-get啊。
myisam 表 转换为 innodb 表
Php/Js/Shell/Go jack 2014-7-18 14:08
从InnoDB引擎转换成MyISAM引擎,看完本文,你应该懂得如何操作以把MyISAM引擎转换成InnoDB引擎了(请确保InnoDB开启,MySQL命令行下SHOW ENGINES命令查看)。
mysql> ALTER TABLE boblog_history ENGINE=InnoDB;
Query OK, 2808 rows affected (0.76 sec)
Records: 2808 Duplicates: 0 Warnings: 0
ALTER TABLE boblog_blogs ENGINE=InnoDB;
ALTER TABLE boblog_calendar ENGINE=InnoDB;
ALTER TABLE boblog_categoriesENGINE=InnoDB;
ALTER TABLE boblog_counter ENGINE=InnoDB;
ALTER TABLE boblog_forbidden ENGINE=InnoDB;
ALTER TABLE boblog_history ENGINE=InnoDB;
ALTER TABLE boblog_linkgroup ENGINE=InnoDB;
ALTER TABLE boblog_links ENGINE=InnoDB;
ALTER TABLE boblog_maxrec ENGINE=InnoDB;
ALTER TABLE boblog_messages ENGINE=InnoDB;
ALTER TABLE boblog_mods ENGINE=InnoDB;
ALTER TABLE boblog_pages ENGINE=InnoDB;
ALTER TABLE boblog_plugins ENGINE=InnoDB;
ALTER TABLE boblog_replies ENGINE=InnoDB;
ALTER TABLE boblog_tags ENGINE=InnoDB;
ALTER TABLE boblog_upload ENGINE=InnoDB;
ALTER TABLE boblog_user ENGINE=InnoDB;
来自:http://www.samhere.net/mysql_innodb_to_myisam.html
mysql> ALTER TABLE boblog_history ENGINE=InnoDB;
Query OK, 2808 rows affected (0.76 sec)
Records: 2808 Duplicates: 0 Warnings: 0
ALTER TABLE boblog_blogs ENGINE=InnoDB;
ALTER TABLE boblog_calendar ENGINE=InnoDB;
ALTER TABLE boblog_categoriesENGINE=InnoDB;
ALTER TABLE boblog_counter ENGINE=InnoDB;
ALTER TABLE boblog_forbidden ENGINE=InnoDB;
ALTER TABLE boblog_history ENGINE=InnoDB;
ALTER TABLE boblog_linkgroup ENGINE=InnoDB;
ALTER TABLE boblog_links ENGINE=InnoDB;
ALTER TABLE boblog_maxrec ENGINE=InnoDB;
ALTER TABLE boblog_messages ENGINE=InnoDB;
ALTER TABLE boblog_mods ENGINE=InnoDB;
ALTER TABLE boblog_pages ENGINE=InnoDB;
ALTER TABLE boblog_plugins ENGINE=InnoDB;
ALTER TABLE boblog_replies ENGINE=InnoDB;
ALTER TABLE boblog_tags ENGINE=InnoDB;
ALTER TABLE boblog_upload ENGINE=InnoDB;
ALTER TABLE boblog_user ENGINE=InnoDB;
来自:http://www.samhere.net/mysql_innodb_to_myisam.html
PHP http与https之间互转
Php/Js/Shell/Go jack 2014-7-17 13:52
当访问 https 时,跳 http:
来自:http://www.nowamagic.net/librarys/veda/detail/287
https://github.com/netputer/netputweets/commit/009286e9f4b8bdbe0b7fb2e3c4824265d43b877b
来自:http://www.nowamagic.net/librarys/veda/detail/287
https://github.com/netputer/netputweets/commit/009286e9f4b8bdbe0b7fb2e3c4824265d43b877b
PHP Fatal error: Call to undefined function session_is_registered() in
Fatal error: Call to undefined function session_register() in
听说是有安全问题,容易被猜中,so,这个函数已经被废弃了。。。
一、检查php.ini里面register_globals=是否设置为on。或者是直接使用session_start();然后用$_session[],取值。
二、将session_register("autonum");变成$_SESSION["autonum"];就可以解决旧版本转换新版本
Fatal error: Call to undefined function session_register() in
听说是有安全问题,容易被猜中,so,这个函数已经被废弃了。。。
一、检查php.ini里面register_globals=是否设置为on。或者是直接使用session_start();然后用$_session[],取值。
二、将session_register("autonum");变成$_SESSION["autonum"];就可以解决旧版本转换新版本
背景:很久前用bo-blog时的编码是latin编码,但里面存的是utf8格式,出现啥问题?当时是放在虚拟域名机上没有ssh,每次备份出来都是乱码,找bob呢,说是得用帝国备份进行导出,会有自动编码识别功能,确实有这个功能,给我后呢,我通过帝国备份王导入自己的本机vmware机器上的mysql版本是Mysql 5.6.13正常,导入到外网vps机器上的mysql 5.6.19上不正常,显示乱码,于是否,我觉得是编码问题了,对照发现,果然不一样,高版本的mysql默认就全是utf8的:
一)内网vmware测试机上的编码情况(mysql 5.6.13):
mysql> show variables like "%char%";
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | latin1 |
| character_sets_dir | /usr/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+
二)Vps的最新版本的mysql如下(mysql 5.6.19):
mysql> show variables like "%char%";
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+
方案一:
目前,对导入正常显示正常的mysql 5.6.13作如下编码规范,操作如下:(-d 表示只导出表结构,不导出数据。 -t是只导出结构。)
1> 以latin1导出表结构和数据(也有分开导出,对latin1作替换其中表结构定义中的字符集为新的字符集utf8):
步骤如下:
(1)这儿一定要是latin1的,否则导出来的是乱码,加入mysqldump参数如下:
sed -i s/CHARSET=latin1/CHARSET=utf8/g `grep -rl "CHARSET=latin1" justwinitData22.sql `
(2)对第1步里export出来里面的表结构定义中的字符集由latin1替换为新的字符集utf8:
/usr/local/webserver/mysql/bin/mysqldump -uroot --default-character-set=latin1 --no-create-info justwinit_mysql > justwinitData22.sql
2>使用新的字符集创建新的数据库并导入(导入前得转成utf8格式,editplus或UltraEdit把justwinitData22.sql 另存为utf8格式):
create database justwinit_mysql default charset utf8;
3>确保在vps高版本导入前的sql里加入一行:set names utf8。(我发现这一行直接在sql的terminal里写再source好像不行,以前好像行的,还得写到sql文本里。)
source /tmp/justwinit/justwinitData22.sql
mysql> source /tmp/justwinit/justwinitData22.sql
导入完毕,中文访问就不乱码了,也就Ok了。EOF
参考:
http://blog.chinaunix.net/uid-25266990-id-3344584.html
方案二:
当然,也可以直接select into,后再load 进去:
步骤一 将待导出的数据表的表结构导出(可以用Phpmyadmin、mysqldump等,很简单就不说了),然后将导出的create table语句的CHARSET=latin1改为CHARSET=utf8,在目标库newdbname中执行该create table语句把表结构建好,接下来开始导出-导入数据
步骤二 命令行:进入mysql命令行下,mysql -hlocalhost -uroot -p*** dbname
步骤三 执行SQL select * from tbname into outfile /usr/local/tbname.sql;
步骤四 将tbname.sql转码为utf-8格式,建议使用UltraEditor,可以直接使用该编辑器的转换->ASCII到UTF-8(Unicode编辑),或者将文件另存为UTF-8(无BOM)格式
步骤五 在mysql命令行下执行语句 set character_set_database=utf8; 注:设置mysql的环境变量,这样mysql在下一步读取sql文件时将以utf8的形式去解释该文件内容
步骤六 在mysql命令行下执行语句 load data infile tbname.sql into table newdbname.tbname;
摘自:http://www.2cto.com/database/201102/84121.html
相关中文乱码及文件编码转换成utf8的工具技巧介绍,附录:
(1)中文在linux上用vi和less查看乱码的设置:
在Linux上看utf8的文件,一个是SecureCRT高架,一个是vim的设置::set fileencoding=utf-8。
想用less命令查看的时候,就先执行这个命令,然后再用less查看:
export LESSCHARSET=latin1
这样用less查看的大部分都没问题了,但是存在某些行太长自动换行后乱码的情况。这是因为每个汉字由多个字节组成,在行尾被截断了,下一行都有问题,你需要手工调整一下客户端的宽度就可以了。
想用VI查看的时候,在打开文本之后的VI里进行如下设置:
:set encoding=utf-8 termencoding=latin1
注意那个encoding是要查看文本的编码格式,一般就是服务器默认编码。
摘自:http://www.myexception.cn/linux-unix/1662792.html
(2)linux下如何做编码转换成utf8的办法:
wget http://pkgs.repoforge.org/enca/enca-1.10-1.el6.rf.x86_64.rpm
enca -L zh_CN -x UTF-8 file #将file转换成utf8的编码格式 也能转成utf8格式:enca-1.10-1.el6.rf.x86_64。
enca的用法:
enca -L zh_CN file #查看file的编码格式
enca -L zh_CN -x UTF-8 file #将file转换成utf8的编码格式
enca -L zh_CN -x UTF-8 file1 file2 #转换之后存成file2文件,不覆盖file1
不过用的时候发现有一部分文件无法传转,具体原因不祥,不过enca会把无法转换的文件告诉你的。对于这些不能转的文件,可以用gedit另存为的方式转,虽然这法笨点,但挺好使的。(上面我就是通过editplus别存为转的,UltraEdit也成。)
实践如下:
[root@jackxiang justwinit]# enca -L zh_CN justwinitData22.sql
Universal transformation format 8 bits; UTF-8
Surrounded by/intermixed with non-text data
[root@jackxiang justwinit]# enca -L zh_CN justwinitData21.sql
Universal transformation format 8 bits; UTF-8
enca实践内容来自:http://zhan.renren.com/itbegin?gid=3602888498000703772&checked=true
一)内网vmware测试机上的编码情况(mysql 5.6.13):
mysql> show variables like "%char%";
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | latin1 |
| character_sets_dir | /usr/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+
二)Vps的最新版本的mysql如下(mysql 5.6.19):
mysql> show variables like "%char%";
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+
方案一:
目前,对导入正常显示正常的mysql 5.6.13作如下编码规范,操作如下:(-d 表示只导出表结构,不导出数据。 -t是只导出结构。)
1> 以latin1导出表结构和数据(也有分开导出,对latin1作替换其中表结构定义中的字符集为新的字符集utf8):
步骤如下:
(1)这儿一定要是latin1的,否则导出来的是乱码,加入mysqldump参数如下:
sed -i s/CHARSET=latin1/CHARSET=utf8/g `grep -rl "CHARSET=latin1" justwinitData22.sql `
(2)对第1步里export出来里面的表结构定义中的字符集由latin1替换为新的字符集utf8:
/usr/local/webserver/mysql/bin/mysqldump -uroot --default-character-set=latin1 --no-create-info justwinit_mysql > justwinitData22.sql
2>使用新的字符集创建新的数据库并导入(导入前得转成utf8格式,editplus或UltraEdit把justwinitData22.sql 另存为utf8格式):
create database justwinit_mysql default charset utf8;
3>确保在vps高版本导入前的sql里加入一行:set names utf8。(我发现这一行直接在sql的terminal里写再source好像不行,以前好像行的,还得写到sql文本里。)
source /tmp/justwinit/justwinitData22.sql
mysql> source /tmp/justwinit/justwinitData22.sql
导入完毕,中文访问就不乱码了,也就Ok了。EOF
参考:
http://blog.chinaunix.net/uid-25266990-id-3344584.html
方案二:
当然,也可以直接select into,后再load 进去:
步骤一 将待导出的数据表的表结构导出(可以用Phpmyadmin、mysqldump等,很简单就不说了),然后将导出的create table语句的CHARSET=latin1改为CHARSET=utf8,在目标库newdbname中执行该create table语句把表结构建好,接下来开始导出-导入数据
步骤二 命令行:进入mysql命令行下,mysql -hlocalhost -uroot -p*** dbname
步骤三 执行SQL select * from tbname into outfile /usr/local/tbname.sql;
步骤四 将tbname.sql转码为utf-8格式,建议使用UltraEditor,可以直接使用该编辑器的转换->ASCII到UTF-8(Unicode编辑),或者将文件另存为UTF-8(无BOM)格式
步骤五 在mysql命令行下执行语句 set character_set_database=utf8; 注:设置mysql的环境变量,这样mysql在下一步读取sql文件时将以utf8的形式去解释该文件内容
步骤六 在mysql命令行下执行语句 load data infile tbname.sql into table newdbname.tbname;
摘自:http://www.2cto.com/database/201102/84121.html
相关中文乱码及文件编码转换成utf8的工具技巧介绍,附录:
(1)中文在linux上用vi和less查看乱码的设置:
在Linux上看utf8的文件,一个是SecureCRT高架,一个是vim的设置::set fileencoding=utf-8。
想用less命令查看的时候,就先执行这个命令,然后再用less查看:
export LESSCHARSET=latin1
这样用less查看的大部分都没问题了,但是存在某些行太长自动换行后乱码的情况。这是因为每个汉字由多个字节组成,在行尾被截断了,下一行都有问题,你需要手工调整一下客户端的宽度就可以了。
想用VI查看的时候,在打开文本之后的VI里进行如下设置:
:set encoding=utf-8 termencoding=latin1
注意那个encoding是要查看文本的编码格式,一般就是服务器默认编码。
摘自:http://www.myexception.cn/linux-unix/1662792.html
(2)linux下如何做编码转换成utf8的办法:
wget http://pkgs.repoforge.org/enca/enca-1.10-1.el6.rf.x86_64.rpm
enca -L zh_CN -x UTF-8 file #将file转换成utf8的编码格式 也能转成utf8格式:enca-1.10-1.el6.rf.x86_64。
enca的用法:
enca -L zh_CN file #查看file的编码格式
enca -L zh_CN -x UTF-8 file #将file转换成utf8的编码格式
enca -L zh_CN -x UTF-8 file1 file2 #转换之后存成file2文件,不覆盖file1
不过用的时候发现有一部分文件无法传转,具体原因不祥,不过enca会把无法转换的文件告诉你的。对于这些不能转的文件,可以用gedit另存为的方式转,虽然这法笨点,但挺好使的。(上面我就是通过editplus别存为转的,UltraEdit也成。)
实践如下:
[root@jackxiang justwinit]# enca -L zh_CN justwinitData22.sql
Universal transformation format 8 bits; UTF-8
Surrounded by/intermixed with non-text data
[root@jackxiang justwinit]# enca -L zh_CN justwinitData21.sql
Universal transformation format 8 bits; UTF-8
enca实践内容来自:http://zhan.renren.com/itbegin?gid=3602888498000703772&checked=true
起因:
难道我这不是一个空行?我是从这个网页复制的内容想去掉空行粘贴到自己的博客上:
http://cisco.chinaitlab.com/application/33658.html
解决办法: 用^[ \t]*\n 替换失败,用将\n\n替换成\n 也不行,用\r\n也不行,
最后,因为它不是空格,是类空格的特殊字符,用^[ \t]*\n 搞不定。
常规删除空行参考(可能是这个网站不让转载?呵呵):
http://www.cnblogs.com/persistences/archive/2013/01/31/2886758.html
http://hi.baidu.com/gewaijixiang/item/2e9c8c3c076654617c034bb0
难道我这不是一个空行?我是从这个网页复制的内容想去掉空行粘贴到自己的博客上:
http://cisco.chinaitlab.com/application/33658.html
解决办法: 用^[ \t]*\n 替换失败,用将\n\n替换成\n 也不行,用\r\n也不行,
最后,因为它不是空格,是类空格的特殊字符,用^[ \t]*\n 搞不定。
常规删除空行参考(可能是这个网站不让转载?呵呵):
http://www.cnblogs.com/persistences/archive/2013/01/31/2886758.html
http://hi.baidu.com/gewaijixiang/item/2e9c8c3c076654617c034bb0
用PQ分区后,如何激活主分区?
最佳答案: 用PQ本身就能激活主分区! 在PQ界面,选定要激活的分区,然后选作业(操作)----进阶(高级)-----设为作用即可.注意由于版本的不同文字可能是括号内的,也可能是括号前的!
注意:一定要一个主分区(否则:操作--进阶--设为作用是灰色的。),逻辑主分区不算。
最佳答案: 用PQ本身就能激活主分区! 在PQ界面,选定要激活的分区,然后选作业(操作)----进阶(高级)-----设为作用即可.注意由于版本的不同文字可能是括号内的,也可能是括号前的!
注意:一定要一个主分区(否则:操作--进阶--设为作用是灰色的。),逻辑主分区不算。
[实践OK]设置Linux 服务的开机启动顺序
Unix/LinuxC技术 jack 2014-7-4 07:57
背景:有时在重启时出现nginx启动比sshd还快,导致加了ssh启动nginx要密码(后来去了),卡在那儿起不来,作为vps,打电话太麻烦了,于是否,能不定定个顺序,可能好一些。
我们知道,在Linux系统中,系统服务的启动脚本一般放在/etc/init.d目录下。不同的开机模式,则分别对应到/etc/rcx.d目录下。其实/etc/rcx.d上的文件,一般都是链接到/etc/init.d目录下的对应文件的。我们还知道,/etc/rcx.d下的文件名,是以S+数字或K+数字打头的,这里的S表示启动,K表示关闭,数值其后面的数值则表示服务启动或服务退出时的次序。那么,这些数值是怎样来的呢?是不是需要在/etc/rcx.d下去修改文件名呢?答案是否定的。那应该怎么做呢?
打开/etc/init.d下的脚本,查找类似下面的一句:
#chkconfig: 2345 64 36
这里的64,就是启动的顺序值,36则是退出的顺序值,如果需要改变顺序,就在这里改。然后执行下面的命令:
#chkconfig --del servicename
#chkconfig --add servicename
#chkconfig servicename on
servicename对应您的服务名称。
来自:http://blog.csdn.net/yetyongjin/article/details/7050068
实践如下:
vi /var/log/boot.log
Starting mcelog daemon
^[[60G[^[[0;32m OK ^[[0;39m]^MStarting php-fpm done
Starting nginx... done
Starting sshd: ^[[60G[^[[0;32m OK ^[[0;39m]^M
Starting xinetd: ^[[60G[^[[0;32m OK ^[[0;39m]^M
Starting MySQL^[[60G[^[[0;32m OK ^[[0;39m]^M
vi /etc/init.d/sshd
# chkconfig: 2345 55 25
vi /etc/init.d/nginx
# chkconfig: 2345 55 25
于是作下调整如下:
vi /etc/init.d/sshd
# chkconfig: 2345 5425
我们知道,在Linux系统中,系统服务的启动脚本一般放在/etc/init.d目录下。不同的开机模式,则分别对应到/etc/rcx.d目录下。其实/etc/rcx.d上的文件,一般都是链接到/etc/init.d目录下的对应文件的。我们还知道,/etc/rcx.d下的文件名,是以S+数字或K+数字打头的,这里的S表示启动,K表示关闭,数值其后面的数值则表示服务启动或服务退出时的次序。那么,这些数值是怎样来的呢?是不是需要在/etc/rcx.d下去修改文件名呢?答案是否定的。那应该怎么做呢?
打开/etc/init.d下的脚本,查找类似下面的一句:
#chkconfig: 2345 64 36
这里的64,就是启动的顺序值,36则是退出的顺序值,如果需要改变顺序,就在这里改。然后执行下面的命令:
#chkconfig --del servicename
#chkconfig --add servicename
#chkconfig servicename on
servicename对应您的服务名称。
来自:http://blog.csdn.net/yetyongjin/article/details/7050068
实践如下:
vi /var/log/boot.log
Starting mcelog daemon
^[[60G[^[[0;32m OK ^[[0;39m]^MStarting php-fpm done
Starting nginx... done
Starting sshd: ^[[60G[^[[0;32m OK ^[[0;39m]^M
Starting xinetd: ^[[60G[^[[0;32m OK ^[[0;39m]^M
Starting MySQL^[[60G[^[[0;32m OK ^[[0;39m]^M
vi /etc/init.d/sshd
# chkconfig: 2345 55 25
vi /etc/init.d/nginx
# chkconfig: 2345 55 25
于是作下调整如下:
vi /etc/init.d/sshd
# chkconfig: 2345 5425
linux在启动过程中都干了些什么,都有哪些程序被调用,是不是看系统的启动日志就可以?启动日志是哪个文件?
终端运行下就知道了
dmesg | less
启动的文件日志
less /var/log/boot.log
其他日至都在/var/log里
less /var/log/boot.log
less /var/log/dmesg
http://bbs.chinaunix.net/thread-2140832-1-1.html
终端运行下就知道了
dmesg | less
启动的文件日志
less /var/log/boot.log
其他日至都在/var/log里
less /var/log/boot.log
less /var/log/dmesg
http://bbs.chinaunix.net/thread-2140832-1-1.html
一、windows7自带的画图工具怎么才能把图片背景变透明啊?
XP时都可以的只要把那个不透明处理的钩去掉就好了~
WIN7怎么弄啊?那个透明选择俺不管钩不钩保存的图片都不透明~
还有图片4角的颜色绝对和要透明的部分一样
打开画图工具后,点击“选择”下方的三角号,出现功能栏后,点击“透明处理”,当“透明处理”前面显示已经打对号时,图片就会变为透明处理。
实践OK过程如下:
1)文字透明:
使用文字工具的时候选上了不透明处理的话整个文本框的底色就是白色,
会覆盖原先的画面,如果没有选上这个选项那么就仅仅有字而已,没有添加背景.
建议你打开一张图片,然后用文字工具分别在打开和关闭这个选项的时候试试看:
写入文字时,在菜单下面就有一个选项是否透明,勾选即可,相对图片较为简单。
2)图片透明:
选中图片->点击菜单栏下的剪贴板旁边的图像->点击“选择”下方的三角号,出现功能栏后,点击“透明处理”,当“透明处理”前面显示已经打对号时,图片就会变为透明处理。
二、windows7画图工具如何将图片反色,谢谢!
(1)手工:全选图片,后在图片上右键,有一个反色。
(2)用快捷键:
你先进到画图里 把图片贴上 ctrl+shift+i 就可以了。
透明来自:http://tieba.baidu.com/p/1837814527
反色来自:http://tieba.baidu.com/p/700933112
XP时都可以的只要把那个不透明处理的钩去掉就好了~
WIN7怎么弄啊?那个透明选择俺不管钩不钩保存的图片都不透明~
还有图片4角的颜色绝对和要透明的部分一样
打开画图工具后,点击“选择”下方的三角号,出现功能栏后,点击“透明处理”,当“透明处理”前面显示已经打对号时,图片就会变为透明处理。
实践OK过程如下:
1)文字透明:
使用文字工具的时候选上了不透明处理的话整个文本框的底色就是白色,
会覆盖原先的画面,如果没有选上这个选项那么就仅仅有字而已,没有添加背景.
建议你打开一张图片,然后用文字工具分别在打开和关闭这个选项的时候试试看:
写入文字时,在菜单下面就有一个选项是否透明,勾选即可,相对图片较为简单。
2)图片透明:
选中图片->点击菜单栏下的剪贴板旁边的图像->点击“选择”下方的三角号,出现功能栏后,点击“透明处理”,当“透明处理”前面显示已经打对号时,图片就会变为透明处理。
二、windows7画图工具如何将图片反色,谢谢!
(1)手工:全选图片,后在图片上右键,有一个反色。
(2)用快捷键:
你先进到画图里 把图片贴上 ctrl+shift+i 就可以了。
透明来自:http://tieba.baidu.com/p/1837814527
反色来自:http://tieba.baidu.com/p/700933112




