Php Linux命令不支持';使用SharpSSH库时,无法从.NET执行工作

Php Linux命令不支持';使用SharpSSH库时,无法从.NET执行工作,php,.net,linux,command,sharpssh,Php,.net,Linux,Command,Sharpssh,我正在尝试使用SharpSsh.NET库通过.NET在Linux中运行一个非常简单的命令。代码没有抛出任何异常,并且仍然不起作用。当我从终端运行sudophp/www/data/{directory}/scripts/create_file.php命令时,它会创建文件。当我从终端运行sudophp/www/data/{directory}/scripts/delete_file.php命令时,它会删除该文件。从.NET调用此代码时,我没有看到正在创建/删除的文件 有关设置,请参见此答案: 创建

我正在尝试使用SharpSsh.NET库通过.NET在Linux中运行一个非常简单的命令。代码没有抛出任何异常,并且仍然不起作用。当我从终端运行
sudophp/www/data/{directory}/scripts/create_file.php
命令时,它会创建文件。当我从终端运行
sudophp/www/data/{directory}/scripts/delete_file.php
命令时,它会删除该文件。从.NET调用此代码时,我没有看到正在创建/删除的文件

有关设置,请参见此答案:

创建_file.php:

<?php
$handle = fopen( 'test.txt', 'w' );
fwrite( $handle, 'Test Contents' );
fclose( $handle );
<?php
if( file_exists( 'test.txt' ) )
        unlink( 'test.txt' );
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tamir.SharpSsh;

namespace Testing
{
    public class Unix
    {
        public static void CreateFile()
        {
            SshExec ssh = new SshExec(Constants.LINUX_HOST, Constants.LINUX_USER, Constants.LINUX_PASSWORD);
            ssh.Connect();
            String result = ssh.RunCommand("sudo php " + Constants.PHP_SCRIPTS_DIR + "create_file.php");
        }

        public static void DeleteFile()
        {
            SshExec ssh = new SshExec(Constants.LINUX_HOST, Constants.LINUX_USER, Constants.LINUX_PASSWORD);
            ssh.Connect();
            String result = ssh.RunCommand("sudo php " + Constants.PHP_SCRIPTS_DIR + "delete_file.php");
        }
    }
}

我假设这些玩具php文件是更大的东西的简化例子

如果您需要实际创建和删除一个文件,不要使用php——您可以直接使用shell命令

如果您不想关闭密码提示,那么
/etc/sudoers
文件中有相应的语法-请参阅“NOPASSWD”

PHP应该而不是作为root运行,尤其是在命令行中使用类似的变量时。如果您有权限问题,请解决它们!PHP应该以最低权限的用户身份运行


如果您需要一个ssh的“维护”帐户,并且不想让php用户拥有额外的功能,那么让它成为与php用户共享组的另一个用户—您可以使用组权限。(您可能需要修改文件创建的默认权限。)

结果字符串的结尾是什么?sudo是否需要此操作的密码?如果没有,第一次是否需要?如果这是真的,则计算机正在缓存身份验证凭据。为什么需要以root用户身份运行php?这应该作为拥有文件的用户运行。hmmmm good point。在候机楼是这样的。让我试试。我不认为我的问题是命令。我发现您可以通过在命令前面放置echo“password”从stdin读取输入。这仍然不起作用:ssh.RunCommand(“echo\”“+Constants.LINUX\u PASSWORD+”\“\124; sudo php”+Constants.php\u SCRIPTS\u BUYEMP\u DIR+“delete\u file.php”);您使用的是哪个版本的SharpSSH库?总的来说,它使用起来有点陈旧和粗糙。如果您在尝试最新的编译,但它没有按照您想要的方式工作,那么您可能希望在CodePlex上查看SSH.net。这个库维护得很好,我可以通过另一种方式避免密码提示——将echo放在脚本前面。问题似乎与SharpSsh库有关。