繁体   English   中英

如何在已部署的网站中创建符号链接

[英]How to make a symlink in a deployed website

我是Laravel的新手,你知道为了访问存储文件,你应该有一个从存储/ app / public到public / storage的符号链接。 在计算机中,您只需输入命令行:php artisan storage:link。 但现在我已将我的网站部署在托管上,并希望创建一个符号链接。 我该怎么做?

我担心这在共享主机上几乎是不可能的,因为您需要shell访问权来创建与计算机上相同的符号链接。

根据您的选择, Laravel Forge可能对您有所帮助。

亲切的问候

也许如果你可以在你的作曲家的“ scripts ”标签中添加一个调用来在项目部署后创建链接:

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**调用发生时创建链接。

如果未创建存储文件夹,您将收到:

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

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导航到它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM