我一步一步地尝试,最后成功了。
Step 1 - hello.py
我试图创建hello。在Windows 10上使用Atom复制文件,并多次将其上载到Linux服务器。它可以使用;蟒蛇3你好。py”字样;命令,但在使用时始终无法运行/你好py”字样;命令
我必须在Linux服务器和";上创建它/你好py”字样;命令生效。
# pwd
/var/www/html/wordpress/wp-content/plugins/run-python
# cat hello.py
#!/usr/bin/env python3
print("Hello")
# chmod +x hello.py
# ./hello.py
Hello
Step 2 - t-popen.py
我创建了t-popen。在Windows 10上使用Atom复制文件并将其上载到Linux服务器。此PHP文件用于确保
popen()
功能正常。
# cat t-popen.php
<?php
/* Add redirection so we can get stderr. */
$handle = popen( __DIR__ . \'/hello.py\', \'r\' );
$read = \'\';
while ( ! feof( $handle ) ) {
$read .= fread( $handle, 2096 );
}
pclose( $handle );
var_dump( $read );
echo $read;
# php t-popen.php
string(6) "Hello
"
Hello
Step 3 - The WP plugin
我创建了run python。Windows 10上带有Atom的php文件,并将其上载到Linux服务器。
<?php
/**
* Try - Run Python
*
* @package Try\\Run Python
*
* Plugin Name: Try - Run Python
* Plugin URI:
* Description: Try to run a Python script in the WordPress plugin.
* Version: 1.0
* Author: Box
* Author URI:
*/
add_shortcode( \'python\', \'embed_python\' );
function embed_python( $attributes ) {
$data = shortcode_atts(
array(
\'file\' => \'hello.py\',
),
$attributes
);
$handle = popen( __DIR__ . \'/\' . $data[\'file\'], \'r\' );
$read = \'\';
while ( ! feof( $handle ) ) {
$read .= fread( $handle, 2096 );
}
pclose( $handle );
return $read;
}
Step 4
我激活了插件并尝试添加一个短代码
[python]
到一个岗位。
“The”;“你好”;当我查看帖子时,内容中显示了字符串。
Note
上述3个文件都位于同一目录中,即/var/www/html/wordpress/wp-content/plugins/runpython“;在这种情况下。