phpcms那点事——setting_models

关于phpcms的setting_models[”]一说,网站建设麦芒在这里简单说下:

今天在做phpcms的二次开发的时候,突然遇到一个不解的问题,一客户要求将phpcms的网页模块进行二次开发,在phpcms\modules\yp\index.php文件里面就有如下的一段代码:

//列表页推荐位ID,模块配置推荐位第二个为列表页推荐位配置
$posid = intval($this->setting[‘position’][2][‘posid’]);
$siteid = SITEID;
$SEO = seo(SITEID, ”, $this->setting[‘seo_title’], $this->setting[‘seo_description’], $this->setting[‘seo_keywords’]);
//产品modelid
$product_id = $this->setting_models[73];
$buy_id = $this->setting_models[76];
$news_id = $this->setting_models[72];//这句为麦芒添加

看到如何得来”产品modelid“感觉很困惑,因为麦芒想得到”news_id”,所以才困惑不解的。

困惑点就是setting_models 里面为什么是73、76、72 ???

在数据中到处进行了查找,发现并没有任何的蛛丝马迹?难道这个setting_models里面的数字无中生有,我觉得不可能,程序中一切皆对象,不相信不存在…

编者麦芒就通过不断的var_dump()去调试,终于找到了缘由,原来$this->setting_models是一缓存数组,显然缓存是由文件缓存函数来生成的…  到目前为止,终于真相大白了

 

lnmp取消nginx目录PHP执行权限(此法亦用可多站点的安全设置,尤其dedecms)

今天在处理一dedecms的安全配置的时候,涉及了nginx配置文件的设置,当然apache就比较简单了,下面就nginx简单说下设置步骤:

首先要编辑nginx的虚拟主机配置,在fastcgi的location语句的前面按下面的内容添加:

1、单个目录去掉PHP执行权限

  1. location ~ /attachments/.*\.(php|php5)?$ {
  2. deny all;
  3. }

将attachments目录的PHP执行权限去掉。

2、多个目录去掉PHP执行权限

  1. location ~ /(attachments|upload)/.*\.(php|php5)?$ {
  2. deny all;
  3. }

将attachments、upload这二个目录的PHP执行权限去掉。

附上一个完整的虚拟主机的例子供参考:

  1. server
  2. {
  3. listen 80;
  4. server_name www.xker.com;
  5. index index.html index.htm index.php;
  6. root /home/wwwroot/bbs.vpser.net;include discuz.conf;
  7. location ~ /(attachments|upload)/.*\.(php|php5)?$ {
  8. deny all;
  9. }
  10. location ~ .*\.(php|php5)?$
  11. {
  12. fastcgi_pass unix:/tmp/php-cgi.sock;
  13. fastcgi_index index.php;
  14. include fcgi.conf;
  15. }
  16. access_log off;
  17. }

添加完执行:/usr/local/nginx/sbin/nginx -t测试配置文件,执行:/usr/local/nginx/sbin/nginx -s reload 载入配置文件使其生效。

php技术开发友情提示:注意顺序,一定要放在 “location ~ .*\.(php|php5)?$” 一行上面,不然不会生效。