mirror of
https://github.com/nextcloud/server.git
synced 2026-02-18 18:28:50 -05:00
Revert "remove 32-bit workarounds"
This reverts commit dd8774389e.
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
This commit is contained in:
parent
3885818ab6
commit
e156f8339c
4 changed files with 31 additions and 4 deletions
|
|
@ -171,6 +171,11 @@ class Local extends \OC\Files\Storage\Common {
|
|||
return false;
|
||||
}
|
||||
$statResult = @stat($fullPath);
|
||||
if (PHP_INT_SIZE === 4 && $statResult && !$this->is_dir($path)) {
|
||||
$filesize = $this->filesize($path);
|
||||
$statResult['size'] = $filesize;
|
||||
$statResult[7] = $filesize;
|
||||
}
|
||||
if (is_array($statResult)) {
|
||||
$statResult['full_path'] = $fullPath;
|
||||
}
|
||||
|
|
@ -242,6 +247,10 @@ class Local extends \OC\Files\Storage\Common {
|
|||
return 0;
|
||||
}
|
||||
$fullPath = $this->getSourcePath($path);
|
||||
if (PHP_INT_SIZE === 4) {
|
||||
$helper = new \OC\LargeFileHelper;
|
||||
return $helper->getFileSize($fullPath);
|
||||
}
|
||||
return filesize($fullPath);
|
||||
}
|
||||
|
||||
|
|
@ -263,6 +272,10 @@ class Local extends \OC\Files\Storage\Common {
|
|||
if (!$this->file_exists($path)) {
|
||||
return false;
|
||||
}
|
||||
if (PHP_INT_SIZE === 4) {
|
||||
$helper = new \OC\LargeFileHelper();
|
||||
return $helper->getFileMtime($fullPath);
|
||||
}
|
||||
return filemtime($fullPath);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -247,13 +247,14 @@ class Setup {
|
|||
];
|
||||
}
|
||||
|
||||
if (PHP_INT_SIZE < 8) {
|
||||
if ($this->iniWrapper->getString('open_basedir') !== '' && PHP_INT_SIZE === 4) {
|
||||
$errors[] = [
|
||||
'error' => $this->l10n->t(
|
||||
'It seems that this %s instance is running on a 32-bit PHP environment. 64-bit is required for 26 and higher.',
|
||||
'It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. ' .
|
||||
'This will lead to problems with files over 4 GB and is highly discouraged.',
|
||||
[$this->defaults->getProductName()]
|
||||
),
|
||||
'hint' => $this->l10n->t('Please switch to 64-bit PHP.'),
|
||||
'hint' => $this->l10n->t('Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP.'),
|
||||
];
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ class Streamer {
|
|||
} elseif ($request->isUserAgent($this->preferTarFor)) {
|
||||
$this->streamerInstance = new TarStreamer();
|
||||
} else {
|
||||
$this->streamerInstance = new ZipStreamer(['zip64' => true]);
|
||||
$this->streamerInstance = new ZipStreamer(['zip64' => PHP_INT_SIZE !== 4]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -52,6 +52,19 @@ class OC_Response {
|
|||
* @param string|int|float $length Length to be sent
|
||||
*/
|
||||
public static function setContentLengthHeader($length) {
|
||||
if (PHP_INT_SIZE === 4) {
|
||||
if ($length > PHP_INT_MAX && stripos(PHP_SAPI, 'apache') === 0) {
|
||||
// Apache PHP SAPI casts Content-Length headers to PHP integers.
|
||||
// This enforces a limit of PHP_INT_MAX (2147483647 on 32-bit
|
||||
// platforms). So, if the length is greater than PHP_INT_MAX,
|
||||
// we just do not send a Content-Length header to prevent
|
||||
// bodies from being received incompletely.
|
||||
return;
|
||||
}
|
||||
// Convert signed integer or float to unsigned base-10 string.
|
||||
$lfh = new \OC\LargeFileHelper;
|
||||
$length = $lfh->formatUnsignedInteger($length);
|
||||
}
|
||||
header('Content-Length: '.$length);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue