您的位置:首页 > 其它

cannot restore segment prot after reloc: Permission denied解决办法

2011-05-23 15:46 615 查看
最近学习php sapi.

先得到libphp5.so(编译php的时候加入--enable-embed=shared ,然后从.libs里面拷贝,这里不能与--with-apxs2同时出现在编译选项里 版本php5.3.6)

程序代码:

#include "sapi/embed/php_embed.h"
int main(int argc, char * argv[]){
PHP_EMBED_START_BLOCK(argc,argv);
char * script = "echo str_replace('ab','cd','love ddcccccdcccccc');";
zend_eval_string(script, NULL,"" TSRMLS_CC);
char * sr = "$a='1';print $a;";
zval	pv;
zend_eval_string(sr, &pv,"" TSRMLS_CC); //保存输出

switch(Z_TYPE(pv)){
case IS_STRING:
printf("%.*s",Z_STRLEN(pv),Z_STRVAL(pv));
break;
case IS_LONG:
printf("%d",Z_LVAL(pv));
break;
}
PHP_EMBED_END_BLOCK();
return 0;
}


编译语句:

gcc -I/usr/local/php5/include/php -I /usr/local/php5/include/php/main -I /usr/local/php5/include/php/Zend -I /usr/local/php5/include/php/TSRM -lphp5 main.c

生成a.out

但在执行a.out的时候却报错:

error while loading shared libraries: /usr/lib/libphp5.so: cannot restore segment prot after reloc: Permission denied

网上查了下,解决办法:

chcon -t texrel_shlib_t /usr/lib/libphp5.so

关于chcon命令,可以参考这里:http://bbs.chinaunix.net/thread-1989582-1-1.html

在执行a.out就成功了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐