我有以下 C++ 函数:
void foo() {
std::cout << "bar" << std::endl;
}
我正在通过 SWIG 将其移植到 PHP。一切都编译得很好,并且扩展正确加载。我可以从 PHP 调用,但是如果我从命令行运行 PHP 脚本foo()
,我只会看到输出。bar
$ php script.php
bar
如果我在浏览器中加载脚本,什么都不会出现。为什么bar
在这种情况下不显示?
我有以下 C++ 函数:
void foo() {
std::cout << "bar" << std::endl;
}
我正在通过 SWIG 将其移植到 PHP。一切都编译得很好,并且扩展正确加载。我可以从 PHP 调用,但是如果我从命令行运行 PHP 脚本foo()
,我只会看到输出。bar
$ php script.php
bar
如果我在浏览器中加载脚本,什么都不会出现。为什么bar
在这种情况下不显示?
您不能直接打印到标准输出。当然,这只有在您使用 CLI SAPI 时才有效。使用php_printf
或其中任何一项:
//Calls php_output_write
#define PHPWRITE(str, str_len)
//Calls php_output_write_unbuffered
#define PHPWRITE_H(str, str_len)
//Idem:
#define PUTC(c)
#define PUTC_H(c)
#define PUTS(str)
#define PUTS_H(str)
int php_write(void *buf, uint size TSRMLS_DC);
int php_printf(const char *format, ...);
int php_output_write(const char *str, size_t len TSRMLS_DC);
int php_output_write_unbuffered(const char *str, size_t len TSRMLS_DC);
//see the rest of main/output.c