Python で書かれた単純な telnet-server からいくつかの php スクリプトを呼び出そうとしています。こちらがコードです。
# -*- coding: utf8 -*-
#!/usr/bin/env python
# скрипт перекидывает выполнение нужного скрипта на определённый порт
import socket
import os
from commands import *
import subprocess
#define server properties
host = ''
port = 5000
backlog = 5
size = 1024
# configure the server socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host,port))
s.listen(backlog)
# handle client requests
while 1:
client, address = s.accept()
data = client.recv(size)
print data
if data:
#находим путь для выполняемого скрипта
recvCommand = data[5:]
print recvCommand
userCommand = u'' + recvCommand
#userCommand = u''+'/home/mechanic/python/forloop.php'
res = subprocess.call(["php", userCommand])
client.send(data)
35 client.close()
ターミナルで localhost (telnet localhost 5000) に接続し、コマンド 'calc /home/mechanic/python/forloop.php' を実行します。パスはシステムに存在し、手動で実行できます。しかし、スクリプトは私にこのエラーを返しました:
Could not open input file: /home/mechanic/python/forloop.php
しかし、このパスをPythonスクリプトで手動で書くと
userCommand = u''+'/home/mechanic/python/forloop.php'
すべて正常に動作します。間違いはどこで取れますか?
PSこれはforloop.phpのコードです
<?
for ( $i = 0 ; $i <= 1000000; $i++ )
echo "Welcome $i times\n";
?>