在c+中嵌入php+;应用程序或任何方法都可以做到这一点? 我正在寻找将PHP脚本嵌入到C++ Windows应用程序中的方法。 我发现以前的facebook项目,我不知道它有多好,也不知道如何在windows应用程序中使用它(如果有的话)。 在Windows应用程序中有没有嵌入PHP的方法?是C相关的问题,应该是C++应该容易采用的。如果可以的话,您也可以使用通过HTTP请求进行通信。

在c+中嵌入php+;应用程序或任何方法都可以做到这一点? 我正在寻找将PHP脚本嵌入到C++ Windows应用程序中的方法。 我发现以前的facebook项目,我不知道它有多好,也不知道如何在windows应用程序中使用它(如果有的话)。 在Windows应用程序中有没有嵌入PHP的方法?是C相关的问题,应该是C++应该容易采用的。如果可以的话,您也可以使用通过HTTP请求进行通信。,php,c++,Php,C++,有针对windows应用程序或整个桌面应用程序的模块编译器,这些应用程序都是基于php构建的,只要对IPC有积极的认识,您就可以做任何事情 您以何种方式想象这种php代码的嵌入?php不是一个可执行文件,而是一个库。PHPCLI、PHPCGI、mod_php等只是同一个库的接口。您也可以将lib嵌入到您自己的应用程序(桌面应用程序、网络工具等)中,但由于PHP的线程问题,这是一个难题。这不仅仅是在尝试对PHP执行线程时出现的问题,而且当应用程序的其他部分尝试围绕该库执行线程时,该库将崩溃或可能导

有针对windows应用程序或整个桌面应用程序的模块编译器,这些应用程序都是基于php构建的,只要对IPC有积极的认识,您就可以做任何事情


您以何种方式想象这种php代码的嵌入?

php不是一个可执行文件,而是一个库。PHPCLI、PHPCGI、mod_php等只是同一个库的接口。您也可以将lib嵌入到您自己的应用程序(桌面应用程序、网络工具等)中,但由于PHP的线程问题,这是一个难题。这不仅仅是在尝试对PHP执行线程时出现的问题,而且当应用程序的其他部分尝试围绕该库执行线程时,该库将崩溃或可能导致未定义的行为。 然而,这是可以做到的。我做过几个嵌入PHP的项目,唯一一个无法克服线程相关问题的项目是在JNI项目中尝试匹配PHP核心时

这是我将PHP核心嵌入SMTP服务器的一个项目的简介。它能够访问wordpress的所有代码库,而无需进行任何修改(如wp includes中的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;

相关问题但对于C:不要用问题来回答问题。我明白了,这是一篇相当老的帖子,但仍然值得一试,关于这方面的任何新见解,我相信通过查看php cgi或php cli,我可以找出需要做的事情,试图找出是否有一种直接的方法来做同样的事情,我希望有一个php代码的单线程执行。