2

私が直面し続けているので、codeigniterのUpload.phpライブラリを書き直す方法はありますか?

セキュリティ上の理由からescapeshellarg()が無効になっています

このスレッドでescapeshellargの前に@を付けて解決策を試しましたが、それでも画像をアップロードできません。警告を無視してください。

ホスティングサービスの管理者に連絡しようとしましたが、セキュリティ上の理由から有効にできません。

画像をアップロードできるようにこれをだますためにできることはありますか?

4

4 に答える 4

5

独自の関数を作成できますescapeshellarg。これは、指定された文字列内の単一引用符のみをエスケープし、その周囲に単一引用符を追加する非常に単純な関数です。

function my_escapeshellarg($input)
{
  $input = str_replace('\'', '\\\'', $input);

  return '\''.$input.'\'';
}

ただし、プロバイダーがUpload.php必要な他の機能を無効にしている場合は、結局運が悪い可能性があります。

.php呼び出しを含む単純なファイルを作成することで、無効になっている関数を調べることができますphpinfo()disable_functions(生成された出力で検索)

于 2012-12-30T22:53:53.187 に答える
3

system/libraries/Upload.php ファイルで escapeshellarg を @escapeshellarg に置き換えてみてください。

于 2014-04-02T13:43:08.217 に答える
0

これは CI とは関係ありません。ファイル内で機能が無効になっていphp.iniます。さまざまな安全でない機能を無効にすることは非常に一般的です (サーバー管理者の観点から見れば)。

共有ホスティングを使用している場合、おそらくそれについてできることはあまりありません。プロバイダに問い合わせてみてください。

編集できる場合はphp.ini、それを開き、disable_functionsフィールドを見つけてescapeshellarg、リストから削除します。次に、サーバーを再起動します。これにより、機能が有効になります。

それでも問題が解決しない場合は、プロバイダーにアップロードが可能かどうか尋ねてください。つまり、プロバイダーがすべてのアップロード機能を意図的に削除した場合、それを行う方法を探すのに時間を無駄にすることになります.

于 2012-12-30T22:43:49.617 に答える