我正在寻找将php脚本嵌入到C++ windows应用程序的方式。 我发现旧的Facebook项目,我不知道它有多好,或如何在Windows应用程序中使用它,如果有的话。 有没有什么办法可以将php嵌入到Windows应用程序中?在C++应用程序中嵌入PHP或以任何方式可以完成?
3
A
回答
-1
-2
有编译器模块为windows应用程序,或整个桌面应用程序建立在PHP,并积极思考IPC你可以做任何事情。
用哪种方式想象这种嵌入的PHP代码?
+1
不要回答一个问题一个问题。 –
4
PHP不是一个可执行文件,它是一个lib。 php-cli,php-cgi,mod_php等只是同一个库的接口。您也可以将lib嵌入到您自己的应用程序中(桌面应用程序,网络工具等),但由于PHP的线程问题而使其非常痛苦。尝试线程化PHP时,这不仅仅是一个问题,但是当你的应用程序的其他部分尝试绕过它时,lib会崩溃或导致未定义的行为。 但是,它可以完成。我已经完成了一些嵌入PHP的项目,并且唯一无法解决线程相关问题的项目是在JNI项目中尝试配合PHP内核。
下面是我将PHP内核嵌入到SMTP服务器的项目。它能够在不做任何修改的情况下访问所有WordPress的代码库(例如包含在wp-includes中),允许AUTH命令使用wordpress进行授权。它还可以将邮件作为基于电子邮件主题的博客条目直接发送(如果用户通过SMTP以管理员身份登录),并将回复作为评论添加到帖子中。这不是一个黑客或变通办法,SMTP服务使用与HTTP服务相同的代码库,配置和数据库。
case 11: // AUTH
zval **z_auth_ret_code;
zend_hash_index_find(Z_ARRVAL_P(ret_array), 2, (void**)&z_auth_ret_code);
if(Z_TYPE_PP(z_auth_ret_code) == IS_LONG) {
if(Z_LVAL_PP(z_auth_ret_code) == 334) { // is OK
// GET AUTH TYPE
zval **z_auth_type_code;
zend_hash_index_find(Z_ARRVAL_P(ret_array), 3, (void**)&z_auth_type_code);
if(Z_LVAL_PP(z_auth_type_code) == 3) { // AUTH LOGIN
send_to_socket(client_socket, "334 AUTH LOGIN ready. Please send UID\r\n");
char *uid_input = NULL;
int uid_input_len = 0;
if(read_from_socket(client_socket, &uid_input, &uid_input_len, (char*)"\r\n") > 0) {
ZVAL_STRING(user_name, uid_input, 1);
send_to_socket(client_socket, "334 Please send password for UID\r\n");
}
char *pwd_input = NULL;
int pwd_input_len = 0;
if(read_from_socket(client_socket, &pwd_input, &pwd_input_len, (char*)"\r\n") > 0) {
ZVAL_STRING(user_pass, pwd_input, 1);
}
// setup session
zval *function, *retval;
zval *params[2];
MAKE_STD_ZVAL(function);
MAKE_STD_ZVAL(retval);
ZVAL_STRING(function, "open_session", 1);
params[0] = user_name;
call_user_function(EG(function_table), NULL, function, retval, 1, params);
// do auth
ZVAL_STRING(function, "smtp_auth", 1);
params[0] = user_name;
params[1] = user_pass;
call_user_function(EG(function_table), NULL, function, retval, 2, params TSRMLS_CC);
if(Z_TYPE_P(retval) == IS_LONG && Z_LVAL_P(retval) == 1) {
send_to_socket(client_socket, "235 AUTH LOGIN SUCCESSFUL\r\n");
is_authorized = 1;
}else {
send_to_socket(client_socket, "535 AUTH LOGIN FAILED\r\n");
}
}
}
}
break;
相关问题
- 1. 是否可以将nginx嵌入到C/C++应用程序中
- 2. 是否可以在C++应用程序中嵌入TTF或OTF字体文件?
- 3. 可以创建嵌入式AngularJS应用程序的小部件?
- 4. 在嵌入式c应用程序中嵌入python解释器
- 5. 是否可以在原生应用程序中嵌入Phonegap?
- 6. 是否可以在我的应用程序中嵌入wps
- 7. 在WPF应用程序中嵌入Silverlight控件 - 可以吗?
- 8. 在Web应用程序中是否可以嵌入数据库?
- 9. 是否可以在iOS应用程序中嵌入iBook?
- 10. 是否可以在网页中嵌入HTA应用程序
- 11. 我可以在Python应用程序中“嵌入”Python后端吗?
- 12. 是否可以在JavaFX应用程序中嵌入Swing组件?
- 13. 以编程方式运行任何应用程序管理模式c#
- 14. 任何c#应用程序都可以在linux上运行
- 15. 是否可以将耙入嵌入到应用程序中?
- 16. 如何在C#应用程序中嵌入或使用工具?
- 17. YouTube可以嵌入到Android应用程序中吗? WebOS或Blackberry如何?
- 18. CSV或嵌入式应用程序
- 19. 在c#中有一种方法可以知道用户何时用应用程序完成文件编辑?
- 20. 这个应用程序可以在iOS和Android上完成吗?
- 21. 以任何方式在.NET中以编程方式添加HttpHandler?
- 22. 以编程方式进行C++强制转换:可以完成吗?
- 23. 作为嵌入式资源的类库 - 可以完成吗?
- 24. 我可以以任何顺序将中间件应用到应用程序吗?
- 25. 任何人都可以在Web应用程序中看到很好的嵌入式帮助?
- 26. 在Linux上编译Python 2.7.3以嵌入到C++应用程序
- 27. 是否可以在PHP中以编程方式启用扩展?
- 28. Silverlight应用程序是否可以嵌入到PowerPoint中?
- 29. JConsole可以嵌入到Java应用程序中吗?
- 30. 是否可以将ActiveXObject嵌入到Adobe AIR应用程序中?
相关的问题,但对于C:http://stackoverflow.com/questions/1902409/calling-php-from-c –