我是Laravel的新手,你知道为了访问存储文件,你应该有一个从存储/ app / public到public / storage的符号链接 . 在计算机中,您只需输入命令行:php artisan storage:link . 但现在我已将我的网站部署在托管上,并希望创建一个符号链接 . 我该怎么做?
我担心这在共享主机上几乎是不可能的,因为您需要shell访问权来创建与计算机上相同的符号链接 .
根据您的选择,Laravel Forge对您有所帮助 .
亲切的问候
也许如果你可以在你的作曲家的“ scripts ”标签中添加一个调用来在项目部署后创建链接:
composer.json 文件:
composer.json
"scripts": { "post-root-package-install": [ "php -r \"file_exists('.env') || copy('.env.example', '.env');\"" ], "post-create-project-cmd": [ "php artisan key:generate" ], "post-install-cmd": [ "Illuminate\\Foundation\\ComposerScripts::postInstall", "php artisan optimize" "php artisan storage:link" ], "post-update-cmd": [ "Illuminate\\Foundation\\ComposerScripts::postUpdate", "php artisan optimize" "php artisan storage:link" ] }
这将导致每次发生 **composer update** 或 **composer install** 调用时都会创建链接 .
**composer update**
**composer install**
如果未创建存储文件夹,您将收到:
The [public / storage] directory has been linked.
如果已经创建:
The "public / storage" directory already exists.
另见此讨论可能对您有所帮助:https://github.com/laravel/internals/issues/34
Cron的工作对我来说是共享主机的诀窍 . 只需配置cron作业以在下一分钟(或特定关闭时间)运行命令,然后将其删除 .
例如,这将在上午9:30运行命令并将任何输出记录到 myjob.log
myjob.log
30 9 * * * /path/to/php /path/to/artisan storage:link >> /path/to/myjob.log 2>&1
只需在php文件中创建一个符号链接并将其上传到您的公共文件夹,然后通过浏览器导航到它 . 链接必须是绝对路径....
$targetFolder = '/home/account_name/laravel/storage/app/public'; $linkFolder = '/home/account_name/public_html/storage'; symlink($targetFolder, $linkFolder); echo 'Done!'
让我们将文件保存为link.php并上传然后通过http://your_site.com/link.php导航到它
4 回答
我担心这在共享主机上几乎是不可能的,因为您需要shell访问权来创建与计算机上相同的符号链接 .
根据您的选择,Laravel Forge对您有所帮助 .
亲切的问候
也许如果你可以在你的作曲家的“ scripts ”标签中添加一个调用来在项目部署后创建链接:
composer.json
文件:这将导致每次发生
**composer update**
或**composer install**
调用时都会创建链接 .如果未创建存储文件夹,您将收到:
如果已经创建:
另见此讨论可能对您有所帮助:https://github.com/laravel/internals/issues/34
Cron的工作对我来说是共享主机的诀窍 . 只需配置cron作业以在下一分钟(或特定关闭时间)运行命令,然后将其删除 .
例如,这将在上午9:30运行命令并将任何输出记录到
myjob.log
只需在php文件中创建一个符号链接并将其上传到您的公共文件夹,然后通过浏览器导航到它 . 链接必须是绝对路径....
让我们将文件保存为link.php并上传然后通过http://your_site.com/link.php导航到它