Linux目录和文件的权限设置
要求就是:
- 将当前目录中的所有“子目录”的权限设置为755;
- 将当前目录中的所有“文件”的权限设置为644。
解决方法:
chmod 644 -R *
chmod 755 `find -type d`
也可以用find彻底些:
find /path -type f -exec chmod 644 {} /;
find /path -type d -exec chmod 755 {} /;
转自:
要求就是:
解决方法:
chmod 644 -R *
chmod 755 `find -type d`
也可以用find彻底些:
find /path -type f -exec chmod 644 {} /;
find /path -type d -exec chmod 755 {} /;
转自:
老高在一个新环境中装DEDECMS的时候发现后台验证码无法显示。直接搜索一下这个错误,有人说session错误,有的说权限错误等等,这不胡扯么!只能看源代码了,定位到文件/include/vdimgck.php。出错的函数是imagettftext(),由于织梦使用了@将错误隐去,导致这次莫名的错误。将@去掉,错误立马出现:
Fatal error: Call to undefined function imagettftext()
现在我们就明确了,出现错误的原因是PHP编译时没有加上FreeType。
解决办法:
首先编译安装FreeType,以2.4.0为例:
wget http://download.savannah.gnu.org/releases/freetype/freetype-2.4.0.tar.bz2
tar -jxf freetype-2.4.0.tar.bz2
cd reetype-2.4.0
# 安装到/usr/local/freetype
./configure --prefix=/usr/local/freetype
make && make install
下面我们重新编译PHP,加上参数--with-freetype-dir=/usr/local/freetype
./configure \
... \
... \
--with-freetype-dir=/usr/local/freetype
编译完成重启php
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
再GD库中找到FreeType Support说明安装成功!
需要注意的是,如果服务器freetype的版本是1.*,那么你可能需要改变编译参数为--with-ttf[=DIR],以下转自ChinaUnix论坛:
字库 配置开关 FreeType 1.x 要激活 FreeType 1.x 的支持,加上 --with-ttf[=DIR]。
FreeType 2 要激活 FreeType 2 的支持,加上 --with-freetype-dir=DIR。
T1lib 要激活 T1lib(Type 1 字体),加上 --with-t1lib[=DIR]。
本地 TrueType 字符串函数 要激活本地 TrueType 字符串函数的支持,加上 --enable-gd-native-ttf。
参考:
钩子概念对初学者来说可能比较抽象难懂,但是只要掌握了他的工作方式,那么自己动手写一个钩子机制也不难。
Hook这个词很有意思,以下引用自某网络词典:
Hook用作名词时意思是“钩”,转化为动词时可表示把某物弯成钩形,也可表示用弯曲的东西把某物体钩住,引申可表示为“吊”“挂”等。
作为一个程序猿,老高对钩子的解释是,他就是一个触发机制,把你的软件功能想象成一个陷阱,放到##系统流程##可能经过的路上,如果陷阱被系统踩到,就会执行你的程序,当你挂载的钩子执行完后,系统会根据你的程序的结果继续运行。
老高最早接触Hook的编程思想是源于windows,当时打dota很入迷,突然想研究一下改键的原理,于是发现了系统钩子这一说法。
改键的原理,简单地说来就是拦截系统按下键盘时的默认动作,如果需要把小键盘的7映射到Q上,就在拦截时做一个判断,如果的键码是小键盘7,就改为Q的键码,最后发送给系统修改后的键码,即完成了改键操作。
钩子机制的使用在很多系统上都有体现,如windows、wordpress、thinkphp等,由钩子实现的功能在wordpress中叫做插件,在TP中叫做行为。
THINKPHP是国人开发的PHP框架,如今终于深入内部打探了一番,下面给大家分享老高的心得。
今天为大家介绍一些比较抽象,但十分有用的关于PHP的用法。老高在通读了THINKPHP源代码后才发现了这一篇天地。合理的使用这些方法或者常量能帮助你更快速的开发或者DEBUG。
突然想到这个方法,果然已经有人实现了。
有这个脚本也能看出来,数据表的很多信息都保存在INFORMATION_SCHEMA.TABLES表里,还有数据表注释的重要性!
*/
//配置数据库
$dbserver = "localhost";
$dbusername = "root";
$dbpassword = "root";
$database = 'mydb';
//其他配置
$title = '系统数据字典';
$mysql_conn = @mysql_connect("$dbserver", "$dbusername", "$dbpassword") or die("Mysql connect is error.");
mysql_select_db($database, $mysql_conn);
mysql_query('SET NAMES utf8', $mysql_conn);
$table_result = mysql_query('show tables', $mysql_conn);
//取得所有的表名
while ($row = mysql_fetch_array($table_result)) {
$tables[]['TABLE_NAME'] = $row[0];
}
//循环取得所有表的备注
foreach ($tables AS $k=>$v) {
$sql = 'SELECT * FROM ';
$sql .= 'INFORMATION_SCHEMA.TABLES ';
$sql .= 'WHERE ';
$sql .= "table_name = '{$v['TABLE_NAME']}' AND table_schema = '{$database}'";
$table_result = mysql_query($sql, $mysql_conn);
while ($t = mysql_fetch_array($table_result) ) {
$tables[$k]['TABLE_COMMENT'] = $t['TABLE_COMMENT'];
}
$sql = 'SELECT * FROM ';
$sql .= 'INFORMATION_SCHEMA.COLUMNS ';
$sql .= 'WHERE ';
$sql .= "table_name = '{$v['TABLE_NAME']}' AND table_schema = '{$database}'";
$fields = array();
$field_result = mysql_query($sql, $mysql_conn);
while ($t = mysql_fetch_array($field_result) ) {
$fields[] = $t;
}
$tables[$k]['COLUMN'] = $fields;
}
mysql_close($mysql_conn);
$html = '';
//循环所有表
foreach ($tables AS $k=>$v) {
$html .= ''. $v['TABLE_COMMENT'] . '
';
$html .= '';
$html .= '' . $v['TABLE_NAME'] . ' ';
$html .= '字段名 数据类型 默认值
允许非空
自动递增 备注 ';
$html .= '';
foreach ($v['COLUMN'] AS $f) {
$html .= '' . $f['COLUMN_NAME'] . ' ';
$html .= '' . $f['COLUMN_TYPE'] . ' ';
$html .= ' ' . $f['COLUMN_DEFAULT'] . ' ';
$html .= ' ' . $f['IS_NULLABLE'] . ' ';
$html .= '' . ($f['EXTRA']=='auto_increment'?'是':' ') . ' ';
$html .= ' ' . $f['COLUMN_COMMENT'] . ' ';
$html .= ' ';
}
$html .= '
';
}
//输出
echo '
' . $title . '
';
echo '' . $title . '
';
echo $html;
echo '';
修改一下用户名密码即可,之后打印成PDF即可分发给团队成员使用了。
转自http://www.cnblogs.com/zemliu/archive/2012/06/04/2533555.html