php - Symfony 2 - 上传文件,移动方法失败 - 无法创建目录...

标签 php symfony file-upload debian

我正在学习 Symfony 2,但我在使用 UploadedFile 类时遇到了问题。 我想在我的项目中处理文件上传,所以我学会了感谢官方文档:How to handle File Uploads with Doctrine

效果还不错。但是,它仅在本地有效。我使用 MAMP 来测试我的项目。

我试图将我的项目放在 Debian 6 服务器上。 Symfony 应用程序有效,但上传文件无效。 当我使用 move() 方法移动文件时...出现此错误:

Unable to create the "/var/www/project/Symfony/src/project/Bundle/AlbumBundle/Entity/../../../../../web/images/postes_images" directory (500 Internal Server Error)

正如我所说,它在本地运行良好。如果文件夹 postes_images 不存在,它应该自己创建。它在本地运作良好......

这是我的上传功能:

public function upload($indexPoste, $indexPic)
{
    if (null === $this->file) {
       return;
    }

    $this->name = "poste_".$indexPoste."_pic_".$indexPic;
    $this->path = "poste_".$indexPoste."_pic_".$indexPic.".".$this->file->getClientOriginalExtension();
    $this->file->move($this->getUploadRootDir(), $this->path);

    $this->file = null;
}

获取路径的函数:

public function getUploadRootDir()
{
    return __DIR__.'/../../../../../web/'.$this->getUploadDir();
}

protected function getUploadDir()
{
    return 'images/postes_images';
}

路径是正确的,因为它在本地运行良好。我在想是不是php配置的问题... 我进行了一些搜索,我在 move 方法中读到,如果文件夹不存在,他们会调用“mkdir”方法来创建文件夹...如果 mkdir 调用返回 false,它会返回我在上面放置的错误。

如果您有解决此问题的想法,请。我找不到任何东西。

谢谢

最佳答案

如果您使用的是 Debian,您的网络用户应该是 www-data。所以你需要确保这个用户对你的web/images目录有写权限。这可能需要 root 或 sudo 访问权限,具体取决于您的用户权限。但是运行此命令以授予 www-data 访问权限:

chown -R www-data /var/www/project/Symfony/web/images

这将允许 www-data 用户拥有该目录并创建更多目录(假设所有者具有写入权限)。如果您不了解权限,请阅读 Debian Permission wiki了解更多。

关于php - Symfony 2 - 上传文件,移动方法失败 - 无法创建目录...,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21561094/

相关文章:

php - 在 PHP 应用程序中获取配置变量的最佳方法(编码方式)是什么

php - 测试与数据库的连接,返回 true 或 false

php - Symfony 4 未登录生产模式

jquery - 使用 ASP.NET MVC 和 jQuery 多文件上传插件进行多文件上传

python - 如何使用 Tornado 单元测试来测试 "uploading a file"?

php - 验证用户只投票一次

php - 用户在页面上花费的时间

php - 如何使用 Symfony Yaml 转储空数组

php - 覆盖 Controller Symfony 3.4/4.0

java - 如何从java移动应用程序上传更大的文件?