【问题标题】:Executing a python script from PHP to open a socket从 PHP 执行 python 脚本以打开套接字
【发布时间】:2013-03-27 23:56:39
【问题描述】:

我有一个 python 脚本 chatserver.py,其中包括:-

#!/usr/bin/python
from twisted.internet.protocol import Protocol, Factory
from twisted.internet import reactor
<SNIP>
reactor.listenTCP(3800, factory)
print "Server Started"
reactor.run()

这会在端口 3800 上打开一个套接字,如果我从 SSH 启动但我想检查打开的端口,如果它关闭,则使用 PHP 重新打开,但我似乎无法执行 python 脚本。

p>

这是我目前通过 PHP 调用它的方式

function serverCheck() {
   $host = "MYHOST";
   $port = 3800;
   $connection = @fsockopen($host, $port);

   if ( !is_resource($connection) ) { // port not open
       exec('/usr/bin/python PATH_TO_FILE/chatserver.py 2>&1');

    if($connection)
       fclose($connection);
}

我已经尝试了很多我在搜索中找到的东西,但我似乎无法让文件执行。

【问题讨论】:

  • 注释:由于你的.py 文件有shebang,你不需要明确告诉bash 使用/usr/bin/python。只需chmod +x chatserver.py
  • 您是否使用 chmod -x 使您的 python 文件可执行?
  • 您的{} 不匹配!!
  • 您的if 上缺少一个关闭的}
  • ls -l chatserver.py 显示 root:root?我假设您以yourname:yourname 的身份运行php 脚本?那是你的问题:)

标签: php python permissions


【解决方案1】:

问题已解决:)

最后是shebang :|我知道……我觉得自己很愚蠢!

它应该是 #!/usr/bin/python 但由于某种原因,我通过各种测试更改了它!

感谢您在这方面的帮助。非常感谢!

【讨论】:

    【解决方案2】:

    看起来像是权限问题。 chatserver.py 目前需要 root 用户来运行它。

    不要只是chmod 777 chatserver.py。这很危险。

    我喜欢的方式是为这些管理任务创建一个组:

    groupadd chatserver
    

    然后将自己添加到该组:

    usermod -a -G chatserver willroberts
    

    然后将chatserver.py 更改为该组拥有:

    chown root:chatserver chatserver.py
    

    当您的用户运行 php 时,它将具有正确的组成员身份来运行 py 文件。这种方法为更多“聊天服务器”可执行文件提供了更大的灵活性。如果您有兴趣,可以阅读以下内容:https://wiki.archlinux.org/index.php/Users_and_Groupshttp://www.tldp.org/LDP/intro-linux/html/sect_03_04.html

    【讨论】:

    • 好的,所以它现在说该组是聊天服务器,但仍然没有执行!所有者以 ftpn3wlog-n 出现,这是正确的!
    • 当您运行groups willroberts 时,它是否显示您是chatserver 的成员?当您运行ls -l phpscript.php 时,它是属于willroberts 还是chatserver?当您运行ls -l chatserver.py 时,它是否属于chatserver 组?
    • 或者,您的php 脚本是由网络服务器运行的吗?您可以将网络服务器用户添加到组chatserver
    • Groups 在聊天服务器中显示是的。 php 文件仍归根用户所有。我也应该将它添加到聊天服务器吗?这是我为 ls -l chatserver.py 得到的输出:-rwxr-xr-x 1 ftpn3wlog-n chatserver 1326 Apr 5 06:48 chatserver.py
    • 等一下。你是如何运行 php 脚本的?
    猜你喜欢
    • 2015-10-26
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 2019-09-23
    • 2015-08-22
    • 2019-12-11
    • 2022-12-11
    相关资源
    最近更新 更多