无法写入图像目录 |使用 Laravel forge 的云托管

Cannot write to images directory | cloud hosting with Laravel forge

我在使用 Laravel forge 部署 Laravel 应用程序时遇到问题。我尝试在 Laravel 中使用 faker 包生成假图像,但是,

    Cannot write to directory "/home/forge/my.domain/public/storage/images/products/cover_img"

  at vendor/fakerphp/faker/src/Faker/Provider/Image.php:98
     94▕     ) {
     95▕         $dir = null === $dir ? sys_get_temp_dir() : $dir; // GNU/Linux / OS X / Windows compatible
     96▕         // Validate directory path
     97▕         if (!is_dir($dir) || !is_writable($dir)) {
  ➜ 98▕             throw new \InvalidArgumentException(sprintf('Cannot write to directory "%s"', $dir));
     99▕         }
    100▕ 
    101▕         // Generate a random filename. Use the server address so that a file
    102▕         // generated at the same time on a different server won't have a collision.

在工厂文件中,

'cover_img' => $this->faker->image(public_path('storage/images/products/cover_img'), 640, 480, null, false),

这是我第一次使用云主机。使用共享主机时,我可以授予创建文件夹的权限,也可以手动创建文件夹。请帮我解决这个问题。谢谢!

***更新 ***

我修改了一些代码,然后再次尝试。

if(!File::exists(public_path().'/storage/images/products/cover_img'))
{   File::makeDirectory(public_path().'/storage/images/products/cover_img', 0777,true);
    }

现在使用 Laravel forge,

部署时出现错误
ErrorException 

mkdir(): Permission denied

如果有人能帮助我解决这个问题,我将不胜感激。

最后,我弄清楚了问题,我想首先我做错了,因为我试图在使用带有 php artisan migrate:fresh --seed 代码的 forge 进行部署时播种。然后出现了那个错误。下面有错误的代码。

cd /home/forge/dev.mydomain.com
git pull origin $FORGE_SITE_BRANCH
$FORGE_COMPOSER install --no-interaction --prefer-dist --optimize-autoloader

( flock -w 10 9 || exit 1
    echo 'Restarting FPM...'; sudo -S service $FORGE_PHP_FPM reload ) 9>/tmp/fpmlock

if [ -f artisan ]; then
    $FORGE_PHP artisan migrate --seed
fi

所以,最后,我只是在 forge 中使用默认设置进行部署,然后我使用终端登录服务,然后我 运行 php artisan migrate --seed 命令,我是成功没有任何错误。这是我遵循的步骤,

  1. 使用 git bash
  2. 生成 SSH 密钥

ssh-keygen

  1. 将 ssh 密钥添加到 forge
  2. 运行 这个命令在 git bash 终端

ssh forge@ip address in the server

  1. 然后使用此代码安装 oh my zsh,

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

  1. 然后使用终端进入主机中我的目录,

cd dev.maydomain.com

  1. 和最终的 运行 种子,

php artisan migrate --seed