web-dev-qa-db-ja.com

Drush Open_BaseDirエラー

.iniファイルでセーフモードをオフにしましたが、PHPステータスページでオフになっていることを確認しました。

次の制限付きPHPモードには空でない値があります:open_basedir。この構成はdrushと互換性がありません。/usr/local/php-5.2.17/etc/phpで構成設定を確認してください。 iniまたはdrush.iniファイル。

 safe_mode Off Off 
 memory_limit 168M 168M 
 open_basedir no value no value 

更新:これはMediaTempleのグリッドサービス(gs)にあることは注目に値します。 PHP CLIは実際にはopen_basedirが設定された別の.iniファイルを使用しているようです。そのため、私はまだその部分を理解しようとしています。

3
Eric I.E.

私の解決策は、この行を.bash_profileに追加することでした

alias drush='/usr/bin/php5 -c /home/000000/etc/drush.ini ~/bin/drush/drush.php'

MediaTemples Grid ServiceのCLIは別のPHP.iniファイルを使用することがわかりました。したがって、その行は基本的に、drush.iniファイルを見つけて一部の設定を上書きするように指示しています。 000000をサーバー番号に置き換えてください。 kiamlalunoとMediaTemplesのサポートに感謝します。

3
Eric I.E.

@Eric I.E.あなたは正しいです。そうすれば問題は解決します。ただし、 http://drupalcode.org/project/drush.git/blob_plain/refs/heads/master:/examples/example.drush.ini からdrush.iniのコピーを作成する必要がありますまた、コメント化されていない行で "open_basedir ="を確認してください。

2
Hoa Dang Nguyen

表示されているエラーはDrushによって報告されます。Drushは、「open_basedir」ディレクティブに空の値が含まれていることを確認し、値が空でない場合はエラーを返します。

Drushは、PHPまたは独自のINIファイル( "drush.ini"))によって使用されるphp.iniファイルを使用できます。これは、次のディレクトリで検索されます:

  1. Drushインストールフォルダ
  2. ユーザーの.drushフォルダー(「〜/ .drush/drush.ini」など)
  3. システム全体の構成フォルダー(「/etc/drush/drush.ini」など)

私が参照しているコードは_drush_environment_check_php_ini()関数に含まれており、次のコードです。

  $ini_checks = array('safe_mode' => '', 'open_basedir' => '', 'disable_functions' => array('exec', 'system'), 'disable_classes' => '');

  // Test to insure that certain php ini restrictions have not been enabled
  $prohibited_list = array();
  foreach ($ini_checks as $prohibited_mode => $disallowed_value) {
    $ini_value = ini_get($prohibited_mode);
    $invalid_value = FALSE;
    if (empty($disallowed_value)) {
      $invalid_value = !empty($ini_value);
    }
    else {
      foreach ($disallowed_value as $test_value) {
        if (strstr($ini_value, $test_value) !== FALSE) {
          $invalid_value = TRUE;
        }
      }
    }
    if ($invalid_value) {
      $prohibited_list[] = $prohibited_mode;
    }
  }
  if (!empty($prohibited_list)) {
    drush_log(dt('The following restricted PHP modes have non-empty values: !prohibited_list. This configuration is incompatible with drush.  !php_ini_msg', array('!prohibited_list' => implode(' and ', $prohibited_list), '!php_ini_msg' => _drush_php_ini_loaded_file_message())), 'error');
  }

ご覧のとおり、「safe_mode」ディレクティブまたは「open_basedir」ディレクティブに空でない値が含まれている場合、関数はエラーを返します。

2
kiamlaluno

Pleskを使用してCentOSにdrushをインストール

PleskパネルのあるCentOSシステムにdrush 7.x-5.9をインストールしようとしました。

私はまだこのエラーを受けていました:

しずく

sh:/ tput:No such file or directory以下の制限付きのPHPモードには空でない値があります:safe_mode。[error]この構成はdrushと互換性がありません。/etcの構成設定を確認してください/php.iniまたはdrush.iniファイル内;詳細については、examples/example.drush.iniを参照してくださいsh:/ wget:そのようなファイルまたはディレクトリはありません一時ディレクトリを作成できません。
[エラー] tempnam():filesystem.inc:461にアクセスできません
[警告] sh:/ curl:そのようなファイルまたはディレクトリはありません

これは私がそれを修正した方法です

Sudo -s
wget http://ftp.drupal.org/files/projects/drush-7.x-5.9.tar.gz    
tar -zxf drush-7.x-5.9.tar.gz  -C /usr/local/share    
ln -s /usr/local/share/drush/drush /usr/bin/drush    
cd /usr/local/share/drush    
cp ./examples/example.drush.ini drush.ini   
vi drush.ini

「;」を削除して、以下の行(下部)のコメントを外します。行頭に。

safe_mode =
open_basedir =

ファイルを保存する

このiniファイルを使用するようにdushに指示するexport DRUSH_INI='/usr/local/share/drush/drush.ini'〜/ .bashrcファイルにも上記の行を追加します

1
Rob Groen

ここで欠落している空白を埋めることができなかった人のために、drush.iniファイルには.bash_profileのエイリアスからのソースに加えて、次の行が必要になります。

open_basedir = 
1
nullvariable

(@ greg_1_andersonが言ったように)drush.phpのエイリアスを作成することは、drush-5.x Readmeファイルでカバーされていないためです。より良い解決策は、サーバーのデフォルト設定php.iniファイルを$HOME/.drushまたは/etc/drushにコピーすることです。

次に、それを編集してopen_basedirを値なしに設定し、drushの他のカスタム構成を追加します。

また、php.iniコードサンプルについては this answer を確認してください。

0
Muhammad Reda