" proc_open()因安全原因而被禁用" - PHP错误

时间:2015-10-28 21:08:42

标签: php

  出于安全原因,

proc_open()已被禁用

我目前正在免费托管(Hostinger) - 创建一个仅供我使用的个人网站和其他一些网站。

我知道我应该从 php.ini 中删除proc_open,但由于我的共享托管计划,我无法访问它。

我的代码中proc_open周围的代码如下 - 如果您需要完整代码,请告诉我们。我尝试过评论部分,但它会返回错误。

我想要的只是将其删除并允许代码正常运行。

<?php
// Initializing
if (!isset($ACCOUNTS)) $ACCOUNTS = array();
if (isset($USER) && isset($PASSWORD) && $USER && $PASSWORD) $ACCOUNTS[$USER] = $PASSWORD;
if (!isset($HOME_DIRECTORY)) $HOME_DIRECTORY = '';
$IS_CONFIGURED = count($ACCOUNTS) >= 1 ? true : false;

// Command execution
function execute_command($command) {
    $descriptors = array(
        0 => array('pipe', 'r'), // STDIN
        1 => array('pipe', 'w'), // STDOUT
        2 => array('pipe', 'w')  // STDERR
    );

    $process = proc_open($command . ' 2>&1', $descriptors, $pipes);
    if (!is_resource($process)) die("Can't execute command.");

    // Nothing to push to STDIN
    fclose($pipes[0]);

    $output = stream_get_contents($pipes[1]);
    fclose($pipes[1]);

    $error = stream_get_contents($pipes[2]);
    fclose($pipes[2]);

    // All pipes must be closed before "proc_close"
    $code = proc_close($process);

    return $output;
}

2 个答案:

答案 0 :(得分:0)

您可以尝试覆盖默认的php.ini。在过去,我曾经与另一个共享主机成功,按照这一步

  1. 您在网络文件夹中创建自己的php.ini。不需要在php.ini中拥有所有值,只需要覆盖的内容。例如,您的php.ini可能只有一行这样的

    disable_functions = exec,execl,system,passthru,shell_exec,set_time_limit,escapeshellarg,escapeshellcmd,proc_close,ini_alter,proc_open,dl,popen,show_source,posix_getpwuid,getpwuid,posix_geteuid,posix_getegid,posix_getgrgid,open_basedir,safe_mode_include_dir,pcntl_exec,pcntl_fork,putenv,proc_get_status,proc_nice,proc_terminate,pclose,virtual,openlog,popen,pclose,virtual,openlog,escapeshellcmd,escapeshellarg,dl,show_source,symlink,eval,mail
    
  2. 请记住从禁用功能中删除proc_open

    1. 创建.htaccess并添加此

      <IfModule mod_suphp.c>
      suPHP_ConfigPath /home/user/public_html
      </IfModule>
      
    2. 请记住使用您的路径更改/ home / user / public_html

答案 1 :(得分:0)

我通过编辑此文件解决了我的问题 vendor-> facade-> ignition-> config-> flare.php第29行

'collect_git_information' => true,  <---- Change this value to false

Laravel 6

PHP 7.3