如何选择线程安全版本还是非线程安全版本: http://www.cnblogs.com/Alight/p/3389113.html(看webserver处理请求时, 使用的是多线程的方式还是 多进程的方式), 当php使用fastcgi的方式运行时, 采用的是单线程的方式, 因此应该选择nts-php, 如果采用isapi的方式, 就使用ts-php, 很多php的模块都是 线程不安全的.. 通常apache服务器 使用的是isapi是 ts模式.

写php的类, 实际上, 也就是把 php看作是 oop的语言, 而那正是我所喜欢和熟悉的, 如以前使用c++, 虽然以前php写的可能是用oop的思想,但是并没有支持oop的语言features, 不过php的oop语法跟java更接近

一个很重要的常识: 在编程语言中, 只有函数中的 字符串 类型, 才用 引号, 而语言中的 所有的 "关键字" 等 都不 使用 引号.

事实上, 感觉 tp 各个版本的 结构虽然 "内核" 没变,但是 各版本之间的目录结构, 术语的叫法其实 是很 混乱的, 如:项目, 模块, 分组, 控制器等术语都是很迷惑的,所以, 自己来用的话, 还是要牢固的 掌握一个版本, 固定一个版本(选择v3.2.3) 为好, 要想每个版本都去整的话, 是会迷惑的. 

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){

如果没有定义默认的页面, localhost将显示: /usr/share/httpd/noindex/index.html页面

在httpd.conf文件中, 如果要表示, 只有开启了某个模块后, 才能配置生效的设置: 使用 <IfModule alias_module> Alias /SPhoto /root/SPhoto </IfModule> 在httpd.conf的220行...

什么叫Alias: 本来httpd服务器访问文件是有默认的地址的, 那就是 DocumentRoot "/var/www/html", 但是假设你把web内容没有放在 DocumentRoot目录下或其子目录下, 但是你要httpd server又能够去访问到, 比如通过 地址 http://localhost/SPhoto, 如果没有作Alias, 那么这个SPhoto目录应该表示是 /var/www/html/目录下的一个子目录, 而实际上, 它是在/root/SPhoto, 所以要 实现这个 别名: /SPhoto -> /root/SPhoto, 就要对httpd.conf进行设置, 告诉apache这个别名, 让它... (Alias: Maps webpaths into filesystem paths and is used to access content that does not live under the DocumentRoot. [content作为内容讲时是不可数名词,而作为目录讲时当然是可数名词了,此时需要在后边加S] )

在http.conf配置中的 目录结尾都不要跟 / ,because:

If you include a trailing / on /webpath, then the server will require it (/) to be present in URL.

包括http.conf文件中所有的配置命令格式: 命令指令(首字母大写的驼峰表示法单词 + 空格 + 命令值(字符串用双引号)

就不是很清楚, ls -C 是按列显示, 而按行显示就是 -x...

目录 节(section) 选项属性格式:

<Directory "/root/SPhoto">  注意, 下面所有的设置, 都是 针对 这个目录而设置的, 是对目录! 不是 针对哪一个文件的!!!
属性名称 属性值
Options (+-)Indexes // Options是复数,针对目录, 是否在没有index...文件的时候, 显示索引即显示目录结构, index这里是动词...
(+-)FollowSymLinks // 类似于IfModule alias_module中的Redirect: 即允许 假设在访问/webroot/ftp的时候, 这个ftp实际上是一个链接, 比如链接到/var/www/uploads/去, 即在访问http://www.example.com/ftp的时候, 实际显示的并 不是/webroot/ftp目录的内容, 而是...uploads的内容. **建议设置这个选项, 服务器特性, 避免apache去 执行 系统调用 stat, 去检查目录是不是一个链接, 这样有助于提供网站性能...** 参考:https://www.yuzhenhai.com/view/201212/7609.html
(+-)MultiViews: 表示, 当访问某个子目录 如: foo 时, 如果没有这个子目录, 但是有 几个类似的文件, 如: foo.html, foo.png, ...这时候, apache会根据具体的情况, 决定使用 foo.html 或 foo.png. multiviews, 就是表示多视图, 不同的视图, 根据情况采用不同的 文件显示... AllowOverride None/ All, 表示是否允许重载, 意思是这里httpd.conf文件中设置的Options选项等特性, 是否可以在 目录下的 .htaccess文件中, 重新设置, 用.htaccess中 的设置来覆盖 httpd.conf中的设置. Order allow,deny
Allow from all
deny 1.2.3.4
// 这里是定义的客户端的访问权限, 相当于acl, 但跟acl的区别是: 实际是否生效,以及检测的顺序是以 order中, 最后规定的类型来决定的..., 所以, 如果像下面这样规定, 就达不到目的:
Order deny, allow
deny 1.2.3.4
Allow from all
// 因为order规定检测的最后顺序是 allow, 所以会检测最后的allow from all, 并以此为准!! </Directory>

在linux系统中, 在apache站点中, 路径末尾加不加 /, 其实是有区别的, 不可以随意, 需要小心处理, 比如对于目录链接就是如此...

管理目录栈: pushd(保存历史目录), popd(删除历史目录), dirs(显示堆栈目录). pushd +N 中的+表示从左到右, -表示从右到左, N总是从0开始, 即使是0, 也要用+0, 或-0 表示, 因为有方向性: 最左边的第一个和最右边的第一个很明显是不同的.

  • pushd +N 表示跳转栈中第N个路径,且将此路径压入到栈顶(从左往右,从0开始)
  • pushd -N 表示跳转到第N个路径,且将次路基压入到栈顶 (从右往左,从0开始)
  • pushd +1 等于 pushd

    如何在linux下将cd目录压入目录堆栈 参考https://www.bing.com/search?q=options+%2Bfollowsymlinks&qs=n&form=QBRE&pq=options+%2Bfollowsymlinks&sc=0-23&sp=-1&sk=&cvid=0F96353E2A2C44F88490DCCD3C491A44

allow[2'lau] alias['eili2s] live 表示动词, 住, 居住, 也可以用来表示 "位于", 比如某个文件位于某个目录: file living under the DocumentRoot.

php的安全设置:http://www.cnblogs.com/thinksasa/archive/2013/02/28/2937644.html

php命令 本身的选项:

-a, interactive shell, 将php作为交互式的环境执行 php> 这时可以执行 php-shell攻击: php的函数 system():执行系统命令,如同shell-terminal, bash, 一样执行os命令, 很恐怖的函数.

-m, show compiled in modules

-i, show php detail information

--ini, show ini configuration info


linu下, 要安装 自己扩展php的模块,(即 phpinfo()没有列出的载入模块列表中的新模块)... module, 或 extension, 是一件很麻烦的事, 可能要自己 用源码进行 编译安装..

You don't have permission to access /sphoto on this server.

关于 "载入的模块"? 首先, 这个是针对谁说的? 这个是针对 服务器引擎, apache, httpd而说的, 是说 服务器引擎, 为了完成 网站功能, 必须采取"类似茶件的方式", --即 ""载入模块的方式" 来运作, 一方面apache要实现很多功能, 另一方面, 开发apache, 写apache的代码, 你不可能把全部功能都包含进去, 那样的话, 你一个apache的代码就很大很大了... 所以 值有apache采用 插件, 采用模块 载入的方式, 才能实现现实的需求!! 类似于ps中的滤镜, firefox的插件... 而 php就正好 只是httpd 载入的一个 模块: libphp5.so, libphp5-zts.so, 其他还有如: mod_actions.so, mod_alias.so 等等


php类对象的$this,self,和parent的使用:

总结:this是指向对象实例的一个指针,在实例化的时候来确定指向;

self是对类本身的一个引用,一般用来指向类中的静态变量;

parent是对父类的引用,一般使用parent来调用父类的构造函数。

::::::::::::;

在php中的final, 也很简单直接, 说明的就是最后的:

用final来修饰类, 表示该类不能被继承,因为是最后的嘛;

用final来修饰方法, 表示该方法不能被重写,不能被override, 因为是最后的嘛.

const和static? 其实,本来这两个关键字根本就没有关系的!

const表示这个 "量" 是一个常量, 既然是常量(包括关键字), 都不能在前面加$, 只有变量才能用$ 符合, 也就是说, $符号表示的是 变量!!! const 常量也要用self::PI类来引用!

static是用来表示 静态的 "变量" 或成员函数, 是变量的, 所以static 要加$的: 如: private static $count=0;

<?php
class clss_a{
private static $name="static class_a";
const PI=3.14;
public $value;
public static function getName(){
return self::$name;
}
//这种写法有误,静态方法不能访问非静态属性 ,
public static function getName2(){
return self::$value;
}
public function getPI(){
return self::PI;
}
}

静态方法不能访问非静态成员变量和成员函数, 这个是很显然的, 你想啊, 要引用非静态的东东,必须要一个对象实例,而静态方法调用时,是没有对象的....

注意const属性的申明格式是const PI=3.14,而不是const $PI=3.14。

ThinkPHP真正疑难问题笔记的更多相关文章

  1. thinkphp一句话疑难解决笔记 3

    错误调试, E($msg)? 这个是tp内置的E 方法, E 函数. 它是tp抛异常 的另外一种方式. 默认的异常处理方式是, 在 框架下的 ThinkPHP/Tpl/think_exception. ...

  2. thinkphp一句话疑难解决笔记 2

    php中的_ _call()方法? 它是php5后为对象 类 新增的一个自动方法. 它会监视类的其他方法的调用, 当调用类的不存在的方法时, 会自动调用类的__call方法. tp的 "命名 ...

  3. thinkphp一句话疑难解决笔记

    URL_PATHINFO_DEPR, depr表示 网页路径"分隔符",用"-", 有利于seo,注意是从 sername/index.php(开始的)/hom ...

  4. ThinkPHP中疑难笔记

    不但要记住核心的东西, 还要记住 相关的 东西: 如php cli的版本是 5.6.14 bulit: sep 30, 2015 tp中, 通常说的系统就是框架; 项目就是 "应用程序&qu ...

  5. 关于thinkphp框架中模型笔记

    模型这一块,感觉学习的不是很清楚,单独水一贴thinkphp中模型的学习笔记. 0x01 模型类简介 数据库中每一张表对应一个模型,类名就是表名,类里面的成员变量就是列名, 把一张表对应为一个类,其中 ...

  6. Thinkphp与Ucenter整合笔记

    ucenter手册:http://www.phpddt.com/manual/ucenter/html/index.htm 参考:http://www.thinkphp.cn/topic/1557.h ...

  7. thinkphp v5.1 开发笔记

    一.安装TP5.1 1.使用git安装 <1>下载Tp git clone https://github.com/top-think/think tp5 <2>安装核心库 gi ...

  8. MySql存储过程的创建与使用及在thinkphp中如何调用笔记

    学习sql的存储过程,笔记总结如下: MySQL默认将分号,即";"作为语句的分隔符.如果是这样的话,则一个存储过程将很难正常创建,因为它的BEGIN和END之间可以是任意数量的S ...

  9. POI 操作Excel疑难点笔记

    在POI中,我们可以通过Workbook, Sheet, Row, Cell 对象分别对应Excel文件.工作表.行.单元格. 在POI的使用中,我遇到了几个非常诡异.捉摸不透的问题,现在记录下来. ...

随机推荐

  1. Laravel 数据库读写分离

    config/database.php ... 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localho ...

  2. ARM嵌入式开发板

    iTOP-4412 ARM嵌入式开发板----主要特点 iTOP-4412开发平台是北京迅为电子研发设计的嵌入式开发板平台,核心板配备64位双通道2GB DDR3,16GBEMMC存储,三星原厂S5M ...

  3. 完美者的代言-ArrayList线程安全问题

    [b]保证线程安全的三种方法:[/b]不要跨线程访问共享变量使共享变量是final类型的将共享变量的操作加上同步一开始就将类设计成线程安全的, 比在后期重新修复它,更容易.编写多线程程序, 首先保证它 ...

  4. Redis的安装

    1. 中文官网:http://www.redis.cn/download.html 英文官网:http://www.redis.io/download 里面的内容的一样的,就是一个是中文写的,一个是英 ...

  5. web端功能测试总结(二)

    一.输入框测试 在web测试中,我们经常遇到这种输入框的测试,输入框测试看似简单,实际上包含了很多的测试基本的方法,思考逻辑,下面就是我总结出来的一些注意点: 1)验证输入输出信息的一致性 2)输入框 ...

  6. 关于Repository、Autofac、DbContext简单例子

    运行环境:Visual Studio 2012  Mvc4 数据库备份:Sql Server 2008 r2 解决方案图片: 简单介绍:此示例供初学者了解基本的Repository模式,并结合依赖注入 ...

  7. Struts2 Validation学习

    Every input is evil! ------------------------------华丽的分割线----------------------------------- 客户端提交的数 ...

  8. 再读《C++ Primer》——变量和基本类型

    刚上大学那时,几个室友一块买了本<C++ Primer>第4版,看了一遍后就没怎么碰了,偶尔拿出来翻翻,当作工具书使用.后来知道有第5版了,一直觉得内容差不多吧.直到最近,再读其中的一些内 ...

  9. 用table做网页,设置了border为1px怎么还是觉得很粗?

    设置边框重叠 border-collapse:collapse;  /*边框重叠*/ 例: <table width="700" style="border-col ...

  10. 学习SAP HANA SQL

      学习SAP HANA SQL 语句(创建 EMP,DEPT,BONUS 和 SALGRADE测试表)--像学Oracle一样学习SAP HANA 标签: sap测试oraclesqltableda ...