好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>CMS系统>Dedecms
<tfoot draggable='sEl'></tfoot>

php核心代码在哪 php最基本的代码

很多站长朋友们都不太清楚php核心代码在哪,今天小编就来给大家整理php核心代码在哪,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 php源代码入口函数在那个文件 注意我说的是 php 底层的c代码 2、 从php核心代码分析require和include的区别 3、 linux下 查看 php源代码放在哪个目录底下 4、 php网站源码 核心代码是什么意思 5、 phpcms中我已经登录到了后台页面,但是后台写代码的地方在哪呢,还请各位大神赐教.... php源代码入口函数在那个文件 注意我说的是 php 底层的c代码

要回答你这个问题,你得去看原代码和以及Server Application Programming Interface接口编程,php代码是被Server按照要求调取的。他的源代码在php原代码的sapi下,有很多种入口看你使用的哪一种方式工作,常用的是cgi模式。其中cgai_main.c就是入口文件

从php核心代码分析require和include的区别

在php手册中:

require() is identical to include() except upon failure it will also produce a fatal E_ERROR level error. In other words, it will halt the script whereas include() only emits a warning (E_WARNING) which allows the script to continue.

就是说在失败的时候,require是会中止php运行的,而include是可以继续运行的。

倒底有什么样的区别呢?我们带着这个疑问来一起进入PHP的核心代码。

下面是一个PHP运行过程的图(这个图是出自哪里的?鸟哥画的?)

补习一下:lex是代码扫描器,扫描代码用的,yacc是Yet Another Compiler Compiler,作用是把任何一种代码的语法转成yacc语法,yacc就是解析器(真TMD绕)。

lex在c下的后缀是*.l yacc是*.y

正题

下面看操作记录:

cc@cc-laptop:/opt/workspace$ svn checkout php-src-5.3

从svn取最新的php源代码。

开始深入:

cc@cc-laptop:/opt/workspace/php-src-5.3$ find . -type f -name “*.l” -exec grep -Hn “require_once” {} \;

./Zend/zend_language_scanner.l:1093:”require_once” {

寻找lex代码扫描器文件中出现require_once的地方,zend_language_scanner.l的1093行。

1093 “require_once” {

1094 return T_REQUIRE_ONCE;

1095 }

然后再搜一下T_REQUIRE_ONCE,

cc@cc-laptop:/opt/workspace/php-src-5.3$ find . -type f -name “*.y” -exec grep -Hn “T_INCLUDE” {} \;

./Zend/zend_language_parser.y:52:%left T_INCLUDE T_INCLUDE_ONCE T_EVAL T_REQUIRE T_REQUIRE_ONCE

./Zend/zend_language_parser.y:985: | T_INCLUDE expr { zend_do_include_or_eval(ZEND_INCLUDE, $$, $2 TSRMLS_CC); }

./Zend/zend_language_parser.y:986: | T_INCLUDE_ONCE expr { zend_do_include_or_eval(ZEND_INCLUDE_ONCE, $$, $2 TSRMLS_CC); }

在985行附近,有这样一群代码:

internal_functions_in_yacc:

T_ISSET ‘(‘ isset_variables ‘)' { $$ = $3; }

| T_EMPTY ‘(‘ variable ‘)' { zend_do_isset_or_isempty(ZEND_ISEMPTY, $$, $3 TSRMLS_CC); }

| T_INCLUDE expr { zend_do_include_or_eval(ZEND_INCLUDE, $$, $2 TSRMLS_CC); }

| T_INCLUDE_ONCE expr { zend_do_include_or_eval(ZEND_INCLUDE_ONCE, $$, $2 TSRMLS_CC); }

| T_EVAL ‘(‘ expr ‘)' { zend_do_include_or_eval(ZEND_EVAL, $$, $3 TSRMLS_CC); }

| T_REQUIRE expr { zend_do_include_or_eval(ZEND_REQUIRE, $$, $2 TSRMLS_CC); }

| T_REQUIRE_ONCE expr { zend_do_include_or_eval(ZEND_REQUIRE_ONCE, $$, $2 TSRMLS_CC); }

;

于是乎,我们需要继续深入寻找zend_do_include_or_eval,

cc@cc-laptop:/opt/workspace/php-src-5.3$ find . -type f -name “*.c” -exec grep -Hn “zend_do_include_or_eval” {} \;

./Zend/zend_compile.c:4317:void zend_do_include_or_eval(int type, znode *result, const znode *op1 TSRMLS_DC) /* {{{ */

zend_do_include_or_eval中组装了一个结构体,ZEND_INCLUDE_OR_EVAL。

再在zend_vm_def.h中找到ZEND_VM_HANDLER(73, ZEND_INCLUDE_OR_EVAL, CONST|TMP|VAR|CV, ANY):

switch (Z_LVAL(opline->op2.u.constant)) {代码略}

中间关键的一句是:

new_op_array = compile_filename(Z_LVAL(opline->op2.u.constant), inc_filename TSRMLS_CC);

在zend_complie.h文件中:

ZEND_API zend_op_array *compile_filename(int type, zval *filename TSRMLS_DC);

这个函数定义在zend_language_scaner.l文件中,找出最核心的代码:

if (open_file_for_scanning(file_handle TSRMLS_CC)==FAILURE) {

// require与include的差别:错误信息的显示级别(有bailout和无bailout)

if (type==ZEND_REQUIRE) { //require时

zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename TSRMLS_CC);

zend_bailout();

} else {

zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename TSRMLS_CC);

}

compilation_successful=0;

} else {代码略}

继续追踪zend_message_dispatcher可以在main/main.c文件中找到php_message_handler_for_zend函数:

//include输出错误信息时的级别为:E_WARNING

case ZMSG_FAILED_INCLUDE_FOPEN:

php_error_docref(“function.include” TSRMLS_CC, E_WARNING, “Failed opening ‘%s' for inclusion (include_path='%s')”, php_strip_url_passwd((char *) data), STR_PRINT(PG(include_path)));

break;

//require输出错误信息时的级别为:E_COMPILE_ERROR

代码略

总结

和开头PHP手册所说完全一致,require和include的区别在于,出现错误时,一个是error一个是warning。

linux下 查看 php源代码放在哪个目录底下

rpm包安装的,一般在/etc/php.ini

源码编译安装的,一般在安装目录的conf目录下

用phpinfo()函数查看,新建一个空白的PHP文件,输入以下内容

<?php

phpinfo();

?>

php网站源码 核心代码是什么意思

这个是不能直接查看的只有几种途径:

PHP是编译的运行程序,在浏览器看到的是编译执行之后的展示页面,并不是源代码。

网站站长,公开共享免费提供网站源码整站下载的,可以拿到查看。

网站提供后台,给一定的人群,有一定的管理权限。可以解除代码。

服务器,部分网站因为某些原因,服务器是共享的,可以看到源代码。

phpcms中我已经登录到了后台页面,但是后台写代码的地方在哪呢,还请各位大神赐教....

后台代码:phpcms\modules\admin 这个目录下 ,更具你二次开发模块,在modules 目录下编写

前台代码:phpcms\templates\default\content 在这个目录下

关于php核心代码在哪的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php核心代码在哪 php最基本的代码的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did168615
更新时间:2023-04-11   阅读:25次

上一篇: php+简历+客户管理 php求职简历

下一篇:php引号value php 引号

相关资讯

最新资料更新

  • 1.DedeCms 5.7后台首页很卡的解决方法
  • 2.dedecms 图片页面分离简单方法
  • 3.dede标签云如何生成不同颜色、不同大小的tag标签
  • 4.织梦在导航栏下拉菜单中调用当前栏目子类的方法
  • 5.dedecms实现游客可以提问、回答及查看的方法
  • 6.dede:field name=position去除最后一个大于符号
  • 7.织梦上传服务器后出现数据连接失败是怎么回事如何解决
  • 8.dedecms联动类别的图文使用方法
  • 9.DedeCms开启多站点支持绝对网址后生成RSS错误的修改方法
  • 10.dede调用指定栏目下相关文章的实现方法
  • 11.织梦dedecms使用weight排序无效的解决方法
  • 12.dedecms返回列表页功能的标签代码
  • 13.织梦DedeCMS缩略图失真模糊完美解决方法
  • 14.织梦dede模板内怎么加入php代码的方法示例
  • 15.织梦dedecms5.7版自动给图片添加alt属性的方法
  • 16.DEDE列表调用有缩图显示缩图,无缩图则不显示缩图的方法
  • 17.DedeCMS不支持PHP5.3、5.4及以上版本后台500错误白屏的解决方法
  • 18.DedeCMS Error Warning!提示信息的修改方法
  • 19.dedecms插件开发简明教程
  • 20.织梦DedeCMS [field:highlight/]标签详解(小结)

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]