【问题标题】:Run composer dump-autolaod in php在 php 中运行 composer dump-autoload
【发布时间】:2016-09-15 09:10:21
【问题描述】:

我在我的项目中动态添加服务提供者,我需要运行composer dump-autoload
但它使用系统功能 system('composer dump-autoload'); 并且我没有 system ,exce ,... 对我的主机的权限。我在做什么? 我可以手动将我的服务提供商添加到作曲家吗? 我添加到 autoload_classmap.phpautoload_psr4.php 但我有服务提供商错误

【问题讨论】:

  • 您没有 ssh 访问您的服务器的权限吗?
  • 不,我想在我的代码上使用
  • 那么您没有访问权限,请向您的主机请求访问权限?
  • 您至少需要权限才能在您的 www-data 用户上执行 composer 和读写 vendor/ 文件夹(默认情况下)
  • 它是共享主机,没有访问到我

标签: php laravel laravel-5 laravel-5.2 composer-php


【解决方案1】:

您应该更改服务器上的 PHP.ini 配置:

打开终端或通过 ssh 会话登录到您的服务器。打开 php.ini 文件:

# vi /etc/php.ini

Find disable_functions and set new list as follows:

disable_functions =exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

然后您可以从列表中删除,例如 system 或 exec

保存并关闭文件。通过绑定以下内容重新启动 httpd 服务器

command:
# service http restart

你也可以在你的 php 代码中使用 ini_set。

希望对你有帮助。

【讨论】:

  • 我没有访问权限。
  • 他没有ssh。
  • 根据您的托管服务,有一些方法可以访问 PHP.ini,例如,您可以通过 htaccess 文件获取本地 php.ini。但是,我建议您在托管服务的支持下询问这种方式...您也可以在这里查看inmotionhosting.com/support/website/php/…
  • 为了安全,我不使用 system , exce ,...
【解决方案2】:

您可以尝试从您的代码中调用以下内容:

Artisan::call('optimize');

does the same thingscomposer dump-autoload 相同,但使用的是 Artisan 命令。

记得将use Artisan 添加到班级顶部。

【讨论】:

    【解决方案3】:

    试试 php exec 函数。

    exec('composer dump');
    

    希望这行得通!

    http://php.net/manual/en/function.exec.php

    【讨论】:

    • 我没有访问权限
    • 你不需要这个。只需将其放入您的代码中,您将在其中进行 system 调用。
    • 为了安全,我不使用 system , exce ,...
    猜你喜欢
    • 2013-12-14
    • 2018-09-09
    • 2016-09-11
    • 2018-07-17
    • 2018-06-06
    • 2018-10-12
    • 2013-06-15
    • 2020-07-13
    • 2017-10-20
    相关资源
    最近更新 更多