php shell_exec无法在Windows上运行

时间:2014-04-21 06:31:28

标签: php

我在Windows上。我有一个字符串如下

Ra6tRR8DIsoll/7O5o6DBfRvlbhdj4mGmivRXYiDHD1JpY1WIMpI5HycXp/IsnUF

我要做的是从php执行一个shell_exec到我的控制台应用程序。控制台应用程序命令行如下

consoleapp decrypt Ra6tRR8DIsoll/7O5o6DBfRvlbhdj4mGmivRXYiDHD1JpY1WIMpI5HycXp/IsnUF

但是当我尝试使用上面的命令运行shell_exec时,我得到一个null。但是,该命令适用于控制台。

是因为字符串中有特殊字符吗?我正在寻找escapeshellarg并想知道它是否可以帮助解决这个问题?

以下是我的代码。我正在调用 doDecreyptWithTime 方法。

private function doDecryptWithTime($string)
    {
        $command =  "aesencryptdecrypt.exe decrypt ". escapeshellarg(trim($string));
        // dd($command);
        return exec($command);

    }

    private function doDecrypt($string)
    {
        $command =  $this->generateEntireCommand(EncryptionCommands::Decrypt). ' ' .$string;
        return shell_exec($command);
        // return  explode(Config::get('myconfig.DecryptDelimiter'),$output);
    }


    private function generateEntireCommand($command)
    {
        if($command == EncryptionCommands::Encrypt)
            return $this->generatePath(). ' '. EncryptionCommands::Encrypt;
        elseif($command == EncryptionCommands::Decrypt)
            return $this->generatePath(). ' '.EncryptionCommands::Decrypt;
        elseif($command == EncryptionCommands::DecryptWithTime)
            return $this->generatePath(). ' '.EncryptionCommands::DecryptWithTime;
    }

    private function  generatePath()
    {
        $fullEncryptFileName = null;
        $encryptFileName =  Config::get('myconfig.EcryptionFileName');
        if(!is_null(Config::get('myconfig.EcryptionFileName')))
        {
            $fullEncryptFileName = public_path().DIRECTORY_SEPARATOR.Config::get('myconfig.EncryptFileLocation').DIRECTORY_SEPARATOR.$encryptFileName;
        }
        else
        {
            $fullEncryptFileName = public_path().DIRECTORY_SEPARATOR.$this->fileLocation.DIRECTORY_SEPARATOR.$encryptFileName;
        }

        if(!is_null($fullEncryptFileName))
            return $fullEncryptFileName;
        else
            throw new Exception('could not generate the filename');
    }

更新1 : 我在PHP 5.5上,所以我相信safe_mode功能不再可用。另外我检查了禁用的功能列表,shell_exec,exec没有在那里列出。 请建议!

0 个答案:

没有答案