Giter VIP home page Giter VIP logo

php7-internal's Introduction

php7-internal's People

Contributors

blueve avatar cyonks avatar imaben avatar laruence avatar lzyim avatar rickysu avatar wjiec avatar zxcvdavid avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

php7-internal's Issues

Content in English?

@laruence, It would be great, if you could please release the posts / content in English as well, so that it can be easily read and understood by more people, including me.

请问下php7的扩展里怎么改写引用的值

zval *a;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &a) == FAILURE)
{
RETURN_NULL();
}
ZVAL_LONG(&(a->value.ref->val),110)
这样可以改写引用的值,但是感觉不太雅观,有没有内核api呢

php 7 returns RETURN_STR , but I can't find the source by ctags.

I use ./ext_skel.... to create the PHP extension skeleton. And I noticed that it returns RETURN_STR() instead of old RETURN_STRING() by default.
And I also can't go to the definition of RETURN_STR by ctags. How can I get the return type list?
Would you please finish this tutorial a.s.a.p. Please.

1
2

Memory leak lefts when I allocate a string with the length from a variable?

It confuses me when I allocate a string with the length from a constant int or size_t variable. It'll make memory leak.

On the other hand, it works well when I allocate it with a number. What's going on with it?

`

PHP_FUNCTION(aa_encrypt64) {
const char *key = "";  // base64
char *str = NULL;
char *datetime = NULL;
char *private_key = NULL;

    const size_t rtn_len = 32;       
char rtn[rtn_len];           // char rtn[rtn_len]  leaves memory leak

int argc = ZEND_NUM_ARGS();
size_t str_len;
size_t datetime_len;
size_t private_key_len;

if (zend_parse_parameters(argc, "sss", &str, &str_len, &datetime, &datetime_len, &private_key, &private_key_len) == FAILURE) 
    return;
    md5(str, rtn);
RETURN_STRINGL(rtn, rtn_len);
}
PHP_FUNCTION(aa_decrypt64)
{

`
Memory leaks .....
1

`

 PHP_FUNCTION(aa_encrypt64) {
  const char *key = "";  // base64
  char *str = NULL;
  char *datetime = NULL;
  char *private_key = NULL;

  size_t rtn_len = 32;       
  char rtn[32];           // char rtn[rtn_len]  leaves memory leak

  int argc = ZEND_NUM_ARGS();
  size_t str_len;
  size_t datetime_len;
  size_t private_key_len;

  if (zend_parse_parameters(argc, "sss", &str, &str_len, &datetime, &datetime_len, &private_key, &private_key_len) == FAILURE) 
    return;
  md5(str, rtn);
  RETURN_STRINGL(rtn, rtn_len);
 }

`
Fine...
3

_zval_struct里面的type_info是什么作用

看了zval那一章,我对_zval_struct里面的type_info没理解是做什么用的。我理解type保存类型,u1.v.type_flag保存这个type是否可复制,可循环等属性。那么这里的type_info又是做什么用的呢?

@laruence

cp: cannnot stat 'modules/*': No such file or directory

I learnt to wrote a sample extension. I found nothing wrong before making install.
Installing shared extensions: /usr/share/php/lib/php/extensions/debug-non-zts-20151012/ cp: cannot stat 'modules/*': No such file or directory make: *** [install-modules] Error 1
I checked that there's a lot of files built after these steps. And I found nothing inside the modules directory, no .so file is inside.

Of course, I make clean it and then re-install it once again. But it's still the same. I have no idea what's wrong with it after googling.

So could you help me?

1

2

3

4

screen shot 2016-04-28 at 2 47 42 pm

php7.0.7响应体中有一定概率带上post请求参数

生产环境跑php7.0.7接近半年时间,最近突然报出错误,通过模拟请求,并用tcpdump抓包,发现php响应体中,有一定概率带post请求参数。
error
error1

脚本tt.php
<?php
echo 'hhhhhhhhh'.PHP_EOL;
命令行:
curl -d "a=b&c=d" http://www.phptest.test/tt.php
hhhhhhhhh
curl -d "a=b&c=d" http://www.phptest.test/tt.php
hhhhhhhhh
curl -d "a=b&c=d" http://www.phptest.test/tt.php
a=b&c=dhhhhhhhhh
curl -d "a=b&c=d" http://www.phptest.test/tt.php
hhhhhhhhh






PHP5 zval 结构体大小的问题

"首先这个结构体的大小是(在64位系统)24个字节, 我们仔细看这个zval.value联合体, 其中zend_object_value是最大的长板, 它导致整个value需要16个字节"

union {
    long lval;
    double dval;
    struct {
        char *val;
        int len;
    } str;
    HashTable *ht;
    zend_object_value obj;
    zend_ast *ast;
} value;

union.str 中有两个成员, 字符型指针 val 占8个字节,整型 len 占4个字节,加上自动补齐。
str 结构体一共占16个字节。

所以,我的问题是:为什说 “zval.value联合体, 其中zend_object_value是最大的长板, 它导致整个value需要16个字节”。如果我的理解有错误,还请鸟哥纠正我。

鸟哥怎么不继续写了?

好久没有更新了,我看walu的phpbook里面有和PHP 7不兼容的地方,不太好找相关的资料,等您这篇做对照呢。多谢鸟哥

鸟哥,求助,写了个扩展,在执行完函数正确输出后segment fault了

(gdb) bt
#0 strlen () at ../sysdeps/x86_64/strlen.S:106
#1 0x00000000007be335 in format_converter (odp=0x7fff6e1d0f90, fmt=0xd5a491 "s(%d) : Freeing 0x%.8lX (%zu bytes), script=%s\n", ap=0x7fff6e1d0ff0)

at /home/jihanzhuang/Downloads/php-7.0.8/main/snprintf.c:993

#2 0x00000000007bedcf in strx_printv (ccp=0x7fff6e1d0fec,

buf=0x7fff6e1d1360 "[Sat Aug 13 21:02:14 2016]  Script:  '/home/jihanzhuang/code/Pinyin/tests/pinyin.php'\n", len=512, 
format=0xd5a490 "%s(%d) :  Freeing 0x%.8lX (%zu bytes), script=%s\n", ap=0x7fff6e1d0ff0) at /home/jihanzhuang/Downloads/php-7.0.8/main/snprintf.c:1248

#3 0x00000000007bf07a in ap_php_snprintf (buf=0x7fff6e1d1360 "[Sat Aug 13 21:02:14 2016] Script: '/home/jihanzhuang/code/Pinyin/tests/pinyin.php'\n", len=512,

format=0xd5a490 "%s(%d) :  Freeing 0x%.8lX (%zu bytes), script=%s\n") at /home/jihanzhuang/Downloads/php-7.0.8/main/snprintf.c:1293

#4 0x00000000007b9768 in php_message_handler_for_zend (message=4, data=0x7fff6e1d2410) at /home/jihanzhuang/Downloads/php-7.0.8/main/main.c:1444
#5 0x0000000000851cad in zend_message_dispatcher (message=4, data=0x7fff6e1d2410) at /home/jihanzhuang/Downloads/php-7.0.8/Zend/zend.c:998
#6 0x000000000081cf06 in zend_mm_check_leaks (heap=0x7f2a6c000040) at /home/jihanzhuang/Downloads/php-7.0.8/Zend/zend_alloc.c:2129
#7 0x000000000081d268 in zend_mm_shutdown (heap=0x7f2a6c000040, full=0, silent=0) at /home/jihanzhuang/Downloads/php-7.0.8/Zend/zend_alloc.c:2201
#8 0x000000000081e113 in shutdown_memory_manager (silent=0, full_shutdown=0) at /home/jihanzhuang/Downloads/php-7.0.8/Zend/zend_alloc.c:2637
#9 0x00000000007ba6e0 in php_request_shutdown (dummy=0x0) at /home/jihanzhuang/Downloads/php-7.0.8/main/main.c:1856
#10 0x000000000091b7ec in do_cli (argc=2, argv=0x1b55310) at /home/jihanzhuang/Downloads/php-7.0.8/sapi/cli/php_cli.c:1141
#11 0x000000000091c068 in main (argc=2, argv=0x1b55310) at /home/jihanzhuang/Downloads/php-7.0.8/sapi/cli/php_cli.c:1344

## core文件的信息,是在format_converter函数中,s是不能访问的地址,程序直接strlen导致的错误。
(gdb) list
case 's':
case 'v':
s = va_arg(ap, char *);
if (s != NULL) {
s_len = strlen(s);
if (adjust_precision && precision < s_len) {
s_len = precision;
}
}
请问有什么办法可以更好地排查问题。

where to begin?

hey,this is just a test message,
if you see this,
Congratulations!
maybe you don't even know that you've just passed the test right here right that moment,
coz you can see your own github repo-issues!
believe it or not , you really can see it!
:(

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.