也许已经有这样的问题了,但没有人回答我的问题。我有一个脚本,它在目录中加载一个Python脚本,然后用PHP显示一个输出:
<?php
$param1 = "first";
$param2 = "second";
$param3 = "third";
$command = "scripts/sg.py";
$command .= " $param1 $param2 $param3 2>&1";
header('Content-Type: text/html; charset=utf-8');
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
echo "<style type='text/css'>
</style>";
$pid = popen( $command,"r");
echo "<body><pre>";
while( !feof( $pid ) )
{
echo fread($pid, 256);
flush();
ob_flush();
echo "<script>window.scrollTo(0,99999);</script>";
usleep(100000);
}
pclose($pid);
echo "</pre><script>window.scrollTo(0,99999);</script>";
echo "<br /><br />Script finalizado<br /><br />";
?>是它应该运行的Python代码,位于目录中:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Script Python Example
import time
import sys
print "Initializing Python Script"
secret = 1337
guess = 0
count = 0
#Help the user give number range.
print 'Guess s number it`s between 0 <-> 2000 '
while guess != secret:
guess = input("Guess: ")
if guess < secret:
print "to small"
elif guess > secret:
print "to big"
count += 1
print 'You guessed the number in %s try' % countPython实际上起作用了!然而,Python的输入似乎不起作用,它们会创建EOF错误(文件结束错误)。
有人能帮助我并建议一种方法来创建一个Python解释器来运行目录中的Python文件。就像,skuplt.org,但是它没有运行客户机用户的代码,而是运行位于目录中的Python,如上面所述。
发布于 2015-02-12 19:01:31
popen只打开一个单向管道;您可以从它读取或写入管道,但不能两者兼而有之。
你想用proc_open代替-见http://php.net/manual/en/function.proc-open.php
https://stackoverflow.com/questions/28485409
复制相似问题