小编Ila*_*ler的帖子

Laravel chmod(/var/dev/project/storage/oauth-public.key):操作失败:不允许操作

更新了以下软件包后,出现了无法找到oauth-public.key文件的错误.

包装操作:1次安装,2次更新,0次删除

更新laravel/framework(v5.4.27 => v5.4.28):正在下载(100%)
安装defuse/php-encryption(v2.1.0):正在下载(100%)
正在更新league/oauth2-server(5.1.3 => 5.1) .4):下载(100%)

首先,我删除了项目/存储中的两个oauth文件,然后执行了这个命令:php artisan passport:install以生成新的oauth文件.

现在,在尝试访问api路由时出现以下错误.

(1/1)ErrorException chmod(/var/dev/project/storage/oauth-public.key):操作失败:不允许操作

堆栈跟踪

在CryptKey.php中(第51行)

at HandleExceptions-> handleError(2,'chmod(/var/dev/project/storage/oauth-public.key):操作失败:操作不被允许','/ var/dev/project/vendor/league/oauth2-server /src/CryptKey.php',51,array('keyPath'=>'file:///var/dev/project/storage/oauth-public.key','passPhrase'=> null,'keyPathPerms'=> '644'))

at chmod('file:///var/dev/project/storage/oauth-public.key',384)在CryptKey.php(第51行)

在ResourceServer.php中的CryptKey-> __construct('file:///var/dev/project/storage/oauth-public.key')(第50行)

文件权限

-rw-r--r-- user:user oauth-private.key
-rw-r--r-- user:user oauth-public.key
Run Code Online (Sandbox Code Playgroud)

更新1

我发现oauth Libaray引入了一个安全修复程序.Oauth V5安全改进

版本5.1.4是与其他5.1.x版本的向后兼容版本.

您将在服务器日志中注意到如下消息:

您必须设置加密密钥以提高此库的安全性 - 有关详细信息,参阅此页面https://oauth2.thephpleague.com/v5-security-improvements/

要在实例化\ League\OAuth2\Server\AuthorizationServer实例后暂停此通知,您应该调用setEncryptionKey()方法传入至少32个字节的随机数据.

您可以使用base64_encode(random_bytes(32))生成它.或者,如果你使用的是Laravel这样的框架,它已经生成了加密密钥,你可以传入(在Laravel的情况下使用env('APP_KEY')).

问题是Laravel Passport的维护者必须解决这个问题.

更新2

删除供应商文件夹并再次执行composer安装后,我仍然遇到同样的错误.

php permissions oauth laravel-5 laravel-passport

17
推荐指数
5
解决办法
8050
查看次数

Laravel:哪些npm软件包应该在"依赖项"和"devDependencies"中?

在Laravel 5.3中,package.json文件如下所示:所有包都在devDependencies中.有人可以告诉我生产中还需要哪些包装.我认为除了browsersync之外的所有.

的package.json

{
  "private": true,
  "scripts": {
    "prod": "gulp --production",
    "dev": "gulp watch"
  },
  "devDependencies": {
    "gulp": "^3.9.1", 
    "jquery": "^3.1.0",
    "laravel-elixir": "^6.0.0-9",
    "laravel-elixir-browsersync-official": "^1.0.0",
    "laravel-elixir-vue-2": "^0.2.0",
    "laravel-elixir-webpack-official": "^1.0.2",
    "lodash": "^4.16.2",
    "vue": "^2.0.1",
    "vue-resource": "^1.0.3"
  },
  "dependencies": {
    "dropzone": "^4.3.0"
  }
}
Run Code Online (Sandbox Code Playgroud)

我认为在生产模式中也需要像vue.js这样的软件包,所以我会将它们移动到依赖项而不是devDependencies.

dependencies npm laravel packages.json

8
推荐指数
2
解决办法
3726
查看次数

reCaptcha file_get_contents():SSL 操作失败

我正在为我的网页使用 Google reCaptcha。

在测试模式下一切正常。没有 SSL。

当我在生产环境中测试我的网页时,出现以下错误:

警告:file_get_contents()函数:SSL操作失败,代码1的OpenSSL错误消息:错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败在 /vendor/google/recaptcha/src/ReCaptcha/RequestMethod/Post.php 上线68

警告:file_get_contents():无法 在第68行的/vendor/google/recaptcha/src/ReCaptcha/RequestMethod/Post.php 中启用加密 警告:file_get_contents( https://www.google.com/recaptcha/api/siteverify ):无法打开流: 在第68行的/vendor/google/recaptcha/src/ReCaptcha/RequestMethod/Post.php 中操作失败 ["invalid-json"]


我像这样调用 reCaptcha API:

<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit"
                async defer></script>
Run Code Online (Sandbox Code Playgroud)

如谷歌的开发人员页面所述。

我在 hoststar.ch 上托管我的网页。正在运行 TSL 1.2。

我希望有人可以帮助我。

php ssl file-get-contents recaptcha

6
推荐指数
1
解决办法
8659
查看次数

找不到PHPUnit类

文件夹结构

/app/lib/Helper.php

/tests/HelperTest.php

/vendor/autoload.php

composer.json

{
    "require-dev": {
        "phpunit/phpunit": "*"
    },

    "autoload": {
        "psr-4": {
            "Datapark\\LPS\\": "app/"
        }
     },

     "autoload-dev": {
         "psr-4": {
             "Datapark\\LPS\\Tests\\": "tests/"
          }
     },
}
Run Code Online (Sandbox Code Playgroud)

Helper.php

<?php

namespace lib;

class Helper
{   
    public function array_get($array, $key, $default = null)
    {
        // code
    } 
}
Run Code Online (Sandbox Code Playgroud)

HelperTest.php

<?php

use lib\Helper;

class HelperTest extends \PHPUnit_Framework_TestCase
{
    public function test_array_get()
    {
        $helper = new Helper();

    }
}
Run Code Online (Sandbox Code Playgroud)

命令我在服务器上运行 [Debian 8/PHP7]

phpunit --bootstrap vendor/autoload.php测试

我得到的错误

1)HelperTest :: test_array_get

错误:找不到类"lib\Helper"

lib\Helper通过命名空间加载,我的IDE(PhpStorm)也识别它.已经挣扎了几个小时而且没有让它发挥作用.

php phpunit unit-testing

5
推荐指数
2
解决办法
5513
查看次数

使用 HTML5 视频标签从 Google Drive 流式传输视频

我正在尝试从 Google Drive 流式传输 200MB 的视频文件。我已经尝试嵌入一个 24MB 的文件,该文件与所有人共享,并且有效:

<video controls>
    <source src="https://drive.google.com/uc?export=download&id=0B0gf7RQXoPVEa0xCSEhiRG5GNHM" type="video/mp4">
    Oops. HTML 5 video not supported.
</video>
Run Code Online (Sandbox Code Playgroud)

当我在浏览器中正常导航到此 URL 时,会显示一个我必须接受的安全请求。我相信这是问题,因为它阻止了下载。也许我在 URL 中缺少一些参数?如何在没有 Google Drive 阻止请求的情况下流式传输更大的文件?

html video html5-video

5
推荐指数
2
解决办法
9877
查看次数

Laravel - 当找不到关系时,用空数组替换null

当没有找到关系时,是否可以用空数组替换null?

例如,客户有联系人和合同,但其中一个合同没有网络.

$customers = Customer::with('contacts', 'contracts.web')
        ->orderBy('company')->orderBy('prename')->get();
Run Code Online (Sandbox Code Playgroud)

结果如下......

2 => array:21 [
  "id" => 1
  "contacts" => array:2 [
    0 => array:12 [
      "id" => 1
      "customer_id" => 1
    ]
    1 => array:12 [
      "id" => 2
      "customer_id" => 1
    ]
  ]
  "contracts" => array:2 [
    0 => array:9 [
      "id" => 1
      "customer_id" => 1
      "web" => array:7 [
        "id" => 1
        "contract_id" => 1
      ]
    ]
    1 => array:9 [
      "id" => 2
      "customer_id" => 1
      "web" => …
Run Code Online (Sandbox Code Playgroud)

php eloquent laravel-collection laravel-eloquent laravel-5.4

2
推荐指数
1
解决办法
3255
查看次数

Laravel 5.4将NULL保存到数据库不工作

以下代码在数据库中产生一个空值,当我从数据库中得到一个空字符串时.

$customer->update(['company' => NULL]);
Run Code Online (Sandbox Code Playgroud)

mysql database laravel laravel-5 laravel-5.4

1
推荐指数
1
解决办法
4368
查看次数

gulp:模块解析失败

我正在使用Laravel 5.3.

安装node-uuid后得到的错误.

{[错误:./~/diffie-hellman/lib/primes.json模块解析失败:/var/www/html/filecloudprod/node_modules/diffie-hellman/lib/primes.json意外令牌(2:11)你可以需要一个合适的加载器来处理这种文件类型.

我的package.json文件.注意json-loader

{
  "private": true,
  "scripts": {
    "prod": "gulp --production",
    "dev": "gulp watch"
  },
  "devDependencies": {
    "gulp": "^3.9.1",
    "jquery": "^3.1.0",
    "laravel-elixir": "^6.0.0-9",
    "laravel-elixir-browsersync-official": "^1.0.0",
    "laravel-elixir-vue-2": "^0.2.0",
    "laravel-elixir-webpack-official": "^1.0.2",
    "lodash": "^4.16.2",
    "vue": "^2.0.1",
    "vue-resource": "^1.0.3",
    "dropzone": "^4.3.0",
    "animate.css": "^3.5.0",
    "node-uuid": "^1.4.7",
    "json-loader": "^0.5.4"
  }
}
Run Code Online (Sandbox Code Playgroud)

然后尝试在gulpfile中合并这样的webpack配置.我尝试了两种不同的方法,参见TRY1和TRY2,当然不是同时,只是发布了两种方法.

const elixir = require('laravel-elixir');

require('laravel-elixir-vue-2');

// TRY 1
elixir.webpack.mergeConfig({
    module: {
        loaders: [{
            test: /\.json$/,
            loader: 'json'
        }]
    }
});

// TRY 2 
elixir.ready(() => {
    elixir.config.js.webpack = {
        loaders: [{ …
Run Code Online (Sandbox Code Playgroud)

json npm gulp webpack laravel-elixir

0
推荐指数
1
解决办法
782
查看次数