- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在开发自己的 PHP 扩展,其中包含一个类。我最近从 Ubuntu 9.04 升级到 9.10,扩展失败了。从那以后,我尝试更新到 10.04 以查看它是否修复了它,因为我的开发环境是 10.04,并且在那里工作正常。与我能理解的唯一主要区别是服务器是 64 位,而我的笔记本电脑是 32 位架构。我有 PHP 版本 5.3.2-1ubuntu4.5(Zend build 20090626)。
我已经尝试运行我的测试 PHP 文件:
<?php$server = "http://localhost/";$port = 1214;$f = new PPKeyClient($server, $port);var_dump($f);
在 GDB 中:
root@node:/etc/php5/conf.d# gdb phpGNU gdb (GDB) 7.1-ubuntuCopyright (C) 2010 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law. Type "show copying"and "show warranty" for details.This GDB was configured as "x86_64-linux-gnu".For bug reporting instructions, please see:...Reading symbols from /usr/bin/php...Reading symbols from /usr/lib/debug/usr/bin/php5...done.done.(gdb) run -f /var/www/test.php Starting program: /usr/bin/php -f /var/www/test.php[Thread debugging using libthread_db enabled][New Thread 0x7fffef15b710 (LWP 9228)][Thread 0x7fffef15b710 (LWP 9228) exited]1Program received signal SIGSEGV, Segmentation fault.0x00000000006e7767 in zend_do_fcall_common_helper_SPEC (execute_data=0x7fff00000000) at /build/buildd/php5-5.3.2/Zend/zend_vm_execute.h:371371 /build/buildd/php5-5.3.2/Zend/zend_vm_execute.h: No such file or directory. in /build/buildd/php5-5.3.2/Zend/zend_vm_execute.h(gdb) bt#0 0x00000000006e7767 in zend_do_fcall_common_helper_SPEC (execute_data=0x7fff00000000) at /build/buildd/php5-5.3.2/Zend/zend_vm_execute.h:371#1 0x00000000006bec20 in execute (op_array=0xfef1b0) at /build/buildd/php5-5.3.2/Zend/zend_vm_execute.h:104#2 0x000000000069694d in zend_execute_scripts (type=0, retval=0x7fffffffbf90, file_count=3) at /build/buildd/php5-5.3.2/Zend/zend.c:1266#3 0x0000000000642598 in php_execute_script (primary_file=0x2) at /build/buildd/php5-5.3.2/main/main.c:2288#4 0x0000000000727a56 in main (argc=0, argv=0x1) at /build/buildd/php5-5.3.2/sapi/cli/php_cli.c:1196(gdb)
以及扩展中的相关位:
PHP_MINIT_FUNCTION(pp){ // Register PPKeyClient class zend_class_entry ce; INIT_CLASS_ENTRY(ce, "PPKeyClient", pp_functions); PPKeyClient_ce = zend_register_internal_class(&ce TSRMLS_CC); PPKeyClient_ce->create_object = PPKeyClient_object_new; memcpy(&PPKeyClient_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); PPKeyClient_handlers.clone_obj = NULL; return SUCCESS;}zend_object_value PPKeyClient_object_new(zend_class_entry *ce TSRMLS_DC){ zend_object_value retval; PPKeyClient_object *intern; // TODO - only instantiate look at // http://stackoverflow.com/questions/1906565/php-extension-library-accessing-php-superglobals // or google for http://www.google.co.uk/search?hl=en&safe=off&q=superglobals+in+php+extensions&aq=f&aqi=&aql=&oq=&gs_rfai= intern = ecalloc(1, sizeof(PPKeyClient_object)); zend_object_std_init(&(intern->std), ce TSRMLS_CC); zend_hash_copy(intern->std.properties, &ce->default_properties, (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval *)); intern->last_curl_result = PPKC_NO_REQUEST; retval.handle = zend_objects_store_put(intern, PPKeyClient_object_dtor, NULL, NULL TSRMLS_CC); retval.handlers = &PPKeyClient_handlers; return retval;}PHP_METHOD(PPKeyClient, __construct){ PPKeyClient_object *intern; char *url, *ssl_ca_crt = NULL; int port = 80, url_len, ssl_ca_crt_len = 0, ua_len = 0; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ls", &url, &url_len, &port, &ssl_ca_crt, &ssl_ca_crt_len) == SUCCES$ { intern = (PPKeyClient_object*)zend_object_store_get_object(getThis() TSRMLS_CC);// intern->port = port;// intern->baseurl = estrndup(url, url_len);// intern->baseurl_len = url_len;// intern->ssl_ca_crt = estrndup(ssl_ca_crt, ssl_ca_crt_len);// intern->ssl_ca_crt_len = ssl_ca_crt_len;// intern->useragent = "PP KeyClient (PPExt#" PHP_PRIVATE_PASSWORDS_EXTNAME " v" PHP_PRIVATE_PASSWORDS_VERSION ")"; }}
我知道注释 intern = (PPKeyClient_object*)zend_object_store_get_object...
行可以让它工作,但显然我不能在没有它的情况下从构造函数设置值。
我迷路了,如果能帮我找出问题,我将不胜感激!
最佳答案
我看到一些安装了 libsafe 的 Ubuntu 版本,如果 Ubuntu 9.04 是这种情况,可能错误总是存在......
因为libsafe可以“避免”一些缓冲区溢出、double free等一些bug。
我不熟悉 PHP 扩展... getThis() 是来自 PHP API 的函数还是您的函数?如果是你的,你能寄给我吗?
关于php - 在 C 中自定义 PHP 扩展中的段错误实例化类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3913113/
我在 JavaScript 文件中运行 PHP,例如...... var = '';). 我需要使用 JavaScript 来扫描字符串中的 PHP 定界符(打开和关闭 PHP 的 )。 我已经知道使
我希望能够做这样的事情: php --determine-oldest-supported-php-version test.php 并得到这个输出: 7.2 也就是说,php 二进制检查 test.
我正在开发一个目前不使用任何框架的大型 php 站点。我的大问题是,随着时间的推移慢慢尝试将框架融入应用程序是否可取,例如在创建的新部件和更新的旧部件中? 比如所有的页面都是直接通过url服务的,有几
下面是我的源代码,我想在同一页面顶部的另一个 php 脚本中使用位于底部 php 脚本的变量 $r1。我需要一个简单的解决方案来解决这个问题。我想在代码中存在的更新查询中使用该变量。 $name)
我正在制作一个网站,根据不同的情况进行大量 PHP 重定向。就像这样...... header("Location: somesite.com/redirectedpage.php"); 为了安全起见
我有一个旧网站,我的 php 标签从 因为短标签已经显示出安全问题,并且在未来的版本中将不被支持。 关于php - 如何避免在 php 文件中写入
我有一个用 PHP 编写的配置文件,如下所示, 所以我想用PHP开发一个接口(interface),它可以编辑文件值,如$WEBPATH , $ACCOUNTPATH和 const值(value)观
我试图制作一个登录页面来学习基本的PHP,首先我希望我的独立PHP文件存储HTML文件的输入(带有表单),但是当我按下按钮时(触发POST到PHP脚本) )我一直收到令人不愉快的错误。 我已经搜索了S
我正在寻找一种让 PHP 以一种形式打印任意数组的方法,我可以将该数组作为赋值包含在我的(测试)代码中。 print_r 产生例如: Array ( [0] => qsr-part:1285 [1]
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: What is the max key size for an array in PHP? 正如标题所说,我想知道
我正在寻找一种让 PHP 以一种形式打印任意数组的方法,我可以将该数组作为赋值包含在我的(测试)代码中。 print_r 产生例如: Array ( [0] => qsr-part:1285 [1]
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
我在 MySQL 数据库中有一个表,其中存储餐厅在每个工作日和时段提供的菜单。 表结构如下: i_type i_name i_cost i_day i_start i_
我有两页。 test1.php 和 test2.php。 我想做的就是在 test1.php 上点击提交,并将 test2.php 显示在 div 中。这实际上工作正常,但我需要向 test2.php
我得到了这个代码。我想通过textarea更新mysql。我在textarea中回显我的MySQL,但我不知道如何更新它,我应该把所有东西都放进去吗,因为_GET模式没有给我任何东西,我也尝试_GET
首先,我是 php 的新手,所以我仍在努力学习。我在 Wordpress 上创建了一个表单,我想将值插入一个表(data_test 表,我已经管理了),然后从 data_test 表中获取所有列(id
我有以下函数可以清理用户或网址的输入: function SanitizeString($var) { $var=stripslashes($var); $va
我有一个 html 页面,它使用 php 文件查询数据库,然后让用户登录,否则拒绝访问。我遇到的问题是它只是重定向到 php 文件的 url,并且从不对发生的事情提供反馈。这是我第一次使用 html、
我有一个页面充满了指向 pdf 的链接,我想跟踪哪些链接被单击。我以为我可以做如下的事情,但遇到了问题: query($sql); if($result){
我正在使用 从外部文本文件加载 HTML/PHP 代码 $f = fopen($filename, "r"); while ($line = fgets($f, 4096)) { print $l
我是一名优秀的程序员,十分优秀!