I wrote a function in php
to upload files, running localhost
it works normal creating the correct directory, but on the server it creates it wrong, if I pass the path: home\banners
, it creates a folder with the bootstrap .. \ assets name and does not save the file, it is as if the function was not making use of the third parameter of mkdir(path, mode, recursive = true)
, follows the function:
// arquivo config.php
define('DP', DIRECTORY_SEPARATOR);
define('UPLOAD_DIRECTORY', __DIR__ . '\..\assets' . DP);
// arquivo controllers.php
public function saveUploadFile(string $uploaddirectory = '', UploadedFile $file)
{
// PEGA EXTENÇÃO DO ARQUIVO
$_['ext'] = pathinfo($file->getClientFilename(), PATHINFO_EXTENSION);
// RENOMEIA PARA NUMERO EXADECIMAL ALEATORIO
$_['rename'] = bin2hex(random_bytes(16));
// JUNTA NOME DO ARQUIVO + EXTENSÇÃO
$image = sprintf('%s.%0.8s', $_['rename'], $_['ext']);
// CRIA PATH QUE SERA SALVA A IMAGEM
$_['path'] = UPLOAD_DIRECTORY . $uploaddirectory;
// SE NÃO EXISTE DIRETORIO CRIAR
if( !is_dir( $_[ 'path' ] ) ) {
if( !mkdir( $_['path'], 0777, true ) ){
exit('falha ao criar arquivo no diretorio '. $_['path']);
}
}
// MOVE ARQUIVO PARA O PATH
$file->moveTo($_['path'] . DP . $image);
// DEVOLVE CAMINHO ONDE IMAGEM FOI SALVA
return $_['path'] . DP . $image;
}
Folder structure:
root
├── app
│ └── Controllers
│ └── Controllers.php
├── bootstrap
│ └── Config.php
└── assets
└── // imagens devem ficar aqui