更新了以下软件包后,出现了无法找到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安装后,我仍然遇到同样的错误.
在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.
我正在为我的网页使用 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。
我希望有人可以帮助我。
文件夹结构
/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)也识别它.已经挣扎了几个小时而且没有让它发挥作用.
我正在尝试从 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 阻止请求的情况下流式传输更大的文件?
当没有找到关系时,是否可以用空数组替换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
以下代码在数据库中产生一个空值,当我从数据库中得到一个空字符串时.
$customer->update(['company' => NULL]);
Run Code Online (Sandbox Code Playgroud) 我正在使用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) php ×4
laravel ×2
laravel-5 ×2
laravel-5.4 ×2
npm ×2
database ×1
dependencies ×1
eloquent ×1
gulp ×1
html ×1
html5-video ×1
json ×1
mysql ×1
oauth ×1
permissions ×1
phpunit ×1
recaptcha ×1
ssl ×1
unit-testing ×1
video ×1
webpack ×1