小编Bee*_*ice的帖子

为什么PHP拒绝在Windows上启用cURL

我使用PHP 5.5.25Apache 2.4Windows 7 x64,我无法激活卷曲模块.我环顾四周,尝试了所有我能想到的.请协助:

  • php.ini,该行extension=php_curl.dll处于活动状态,该文件php_curl.dll存在于extensions目录中C:\php\ext
  • php.ini我设置时extension_dir = ext,没有任何扩展加载.Apache启动时会收到几条消息,类似于Unable to load dynamic libraryext\php_openssl.dll- The specified module could not be found.
  • 当我使用完整路径并设置时extension_dir = C:\php\ext,除了cURL之外,所有扩展都加载正常.我收到错误:Unable to load dynamic libraryC:\ php\ext\php_curl.dll- The specified module could not be found.
  • 我已经尝试将扩展名重命名为php_curl.new.dll和调整,php.ini但我收到有关新文件名的错误消息.我还从中下载了一个全新的DLL副本windows.php.net,但没有区别.
  • 我已检查文件权限php_curl.dll(右键单击文件>>属性>>安全性选项卡),它们与成功加载的扩展的权限相同
  • 我已经复制并粘贴libeay32.dllssleay32.dll从PHP bin目录到System32和Syswow64资料目录由一个响应,指示这个问题
  • 我敢肯定,我编辑的权利php.ini,因为改变了,当我改变了PHP的启动错误消息 …

php curl php-extension

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

Git receive.denyCurrentBranch更新而不是失败

我是git的新手,没有任何版本控制系统的经验。我在本地进行开发,正在寻找一种比FTP更简单的方法来将文件部署到(LAMP)Web服务器。我很难配置Git(适用于Windows的2.5版)在推送更改时自动更新其当前的工作目录。创建本地存储库,执行首次提交并在别名下添加远程位置后,这就是我要做的事情origin

  1. [远程] ssh user@domain
  2. [远程] cd testgit
  3. [远程] git init
  4. [远程] git config receive.denyCurrentBranch updateInstead
  5. [远程] git status:无须提交
  6. [远程] exit
  7. [本地>>主用户] git status:未添加任何内容,但存在未跟踪的文件
  8. [本地>>大师] git push origin master

步骤8产生一个通知和两个错误:

  • stdin: is not a tty
  • fatal: bad config value for 'receive.denycurrentbranch' in config
  • fatal: Could not read from remote repository

我一直在环顾四周,但被困住了。我究竟做错了什么?

git ssh web-deployment

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

无法使用Angular 2 rc5发出http请求

我刚刚升级到Angular 2 RC 5了一个我无法弄清楚的原因,我无法发出任何http请求(即请求永远不会出现/不会显示在浏览器日志中).

这是直到今天升级的代码.

console.log("Let's call github");
let url = 'https://raw.githubusercontent.com/angular/angular/master/LICENSE';
return this.get(url).do(d=>console.log('success'));
Run Code Online (Sandbox Code Playgroud)

当我的组件调用包含此代码的函数时,Let's call github会输出,但是不会发出请求.我确信这个ObservableHttp来自@angular/http正确导入,因为今天早上同样的代码工作.我的第一个想法是我错过了HttpModule,但我已经确认我将它导入我的主要版本AppModule

事实上,如果我注释掉HttpModule导入,我看不出任何区别.错误是一样的,如下:

Exception: TypeError: this._body is null
Run Code Online (Sandbox Code Playgroud)

这是堆栈跟踪的摘录(在底部是调用上面引用的函数的行): 在此输入图像描述

xmlhttprequest angular

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

以编程方式打开和关闭Chart.js工具提示

Chart.js 2.2.1

知道如何触发当我将鼠标悬停在数据点上时运行的代码,以及当我将鼠标移开时运行的代码吗?我需要以编程方式显示和隐藏图表的工具提示.

openTip(oChart, datasetIndex, pointIndex){
   // how to open a specific tooltip?
}
closeTip(oChart, datasetIndex, pointIndex){
   // how to close the same tooltip?
}
Run Code Online (Sandbox Code Playgroud)

如果可以的话,我会展示示例代码,但我甚至不知道从哪里开始.该图表方法文档并没有帮助.

的jsfiddle

javascript charts chart.js

6
推荐指数
2
解决办法
2770
查看次数

为什么PhpStorm不知道PHPUnit_Framework_TestCase

我正在尝试配置PhpStorm 2017.2PhpUnit 5用于我的PHP 5.6项目。

  1. 我已经phpunit-5.7.21.phar官方来源下载了文件,并将其放置在我的PHP 5.6安装目录中。

  2. PhpStorm设置>>语言和框架>> PHP >>测试框架中,我已链接到.phar可执行文件,并将默认配置文件设置phpunit.xml为项目根目录中的。

在此处输入图片说明

  1. 以下是内容phpunit.xml

<?xml version="1.0" encoding="UTF-8"?>

<phpunit>
    <testsuites>
        <testsuite name="Test suite">
            <directory>tests</directory>
        </testsuite>
    </testsuites>
</phpunit>
Run Code Online (Sandbox Code Playgroud)

我正在尝试在tests/unit目录中构建测试,该目录中的源文件项目结构将按照手册中的描述进行镜像。例如:

// project files:
ClassOne.php
vendor/
  ClassTwo.php
  Utility.php

// test files
tests/unit/
  ClassOneTest.php
  vendor/
    ClassTwoTest.php
    UtilityTest.php
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

首先,我不知道如何配置PhpStorm以在tests/unit/相对于项目根目录镜像结构的情况下创建测试。创建测试时,默认情况下,文件与项目文件位于同一目录中。

其次,我不知道如何使PhpStorm索引PHPUnit源代码。即使我已phpunit-5.7.21.phar如上所述链接到文件,但在创建测试时IDE仍会抱怨:

namespace vendor;
class UtilityTest extends \PHPUnit_Framework_TestCase{}
Run Code Online (Sandbox Code Playgroud)

未定义的类PHPUnit_Framework_TestCase

更新1

我通过将保存目录的目录添加.phar …

php phpunit unit-testing phpstorm

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

如何NPM发布以便消费者可以从不同的顶级目录导入

我正在向 NPM 发布一个库。该库是用Typescript编写的,Typescript编译的结果放在一个lib/文件夹中。主文件是index.ts导出我的公共 API 的文件:

export * from './functions';
export * from './models';
Run Code Online (Sandbox Code Playgroud)

在 package.json 中,我指定:

{"main": "lib/index.js", "types": "lib/index.d.ts", "files": ["lib/**/*"]}
Run Code Online (Sandbox Code Playgroud)

一旦我的包发布并安装在其他地方,它的文件夹结构是:

lib/
  index.js
  index.d.ts
  functions/
    index.ts
    my-function.ts
  models/
    index.ts
    my-model.ts
Run Code Online (Sandbox Code Playgroud)

消费者从包根目录导入所有内容:

{"main": "lib/index.js", "types": "lib/index.d.ts", "files": ["lib/**/*"]}
Run Code Online (Sandbox Code Playgroud)

这可行,但我喜欢隔离路径的想法。一种用于函数,另一种用于模型。目前,如果我删除顶级索引,导入将被隔离,但它们现在包含lib/我不想要的路径中的文件夹:

lib/
  index.js
  index.d.ts
  functions/
    index.ts
    my-function.ts
  models/
    index.ts
    my-model.ts
Run Code Online (Sandbox Code Playgroud)

我实际上想要完成的事情是相同的,但没有lib/. 我有一个可行的解决方案,但它似乎太复杂了。这是有效的:

  1. 在 package.json 中,删除main typesfiles键。
  2. 删除或清空index.ts
  3. 要发布,请npm publish使用以下步骤替换简单的内容:
    • 复制 package.json 并将其粘贴到/lib文件夹中
    • cd 进入 …

node.js npm typescript npm-publish npm-pack

6
推荐指数
0
解决办法
818
查看次数

NestJS Websocket 网关:将命名空间与 WS 适配器一起使用

我正在努力在 NestJS 7 中实现 Websocket 网关,如文档中所示。我使用 WS 适配器。

const app = await NestFactory.create(ApplicationModule);
app.useWebSocketAdapter(new WsAdapter(app));
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是网关接受连接,无论 url 是什么。例如,如果我像这样定义我的网关:

@WebSocketGateway(8080, {namespace: '/v3'}
export class MyGateway {}
Run Code Online (Sandbox Code Playgroud)

handleConnection然后,无论客户端请求的路径如何,都会触发该网关:

ws://localhost:8080/some-other-path
Run Code Online (Sandbox Code Playgroud)

不幸的是,这意味着所有客户端都连接到每个网关。命名空间选项仅适用于 socket.io 适配器吗?

websocket nestjs ws nestjs-gateways

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

cURL:CURLOPT_CAPATH包含正确的证书,但是不起作用

以下脚本适用于PHP 5.6.23

$options = [
    CURLOPT_POST => 1,
    CURLOPT_URL => 'https://uat.dwolla.com/oauth/rest/offsitegateway/checkouts',
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_POSTFIELDS => json_encode(['name'=>'value']),
    CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
    CURLOPT_SSL_VERIFYPEER => true,
    CURLOPT_CAINFO => '/path/to/certs/GoDaddyRootCertificateAuthority-G2.crt',
];
$ch = curl_init();

curl_setopt_array($ch, $options);
if( ! $result = curl_exec($ch)) $err = curl_error($ch);
else $err = null;

curl_close($ch);

if($err) echo $err;
else print_r(json_decode($result,true));
Run Code Online (Sandbox Code Playgroud)

我从Dwolla的付款API得到了预期的响应。为了使脚本更具动态性,我尝试将其更改为引用托管我希望cURL信任的证书的目录。因此,我将最后一个选项(CURLOPT_CAINFO)更改为:

CURLOPT_CAPATH => '/path/to/certs'
Run Code Online (Sandbox Code Playgroud)

但是,这会破坏脚本,并且不会建立连接。错误是:

SSL证书问题:无法获取本地颁发者证书

我知道目录是正确的,并且证书文件有效,因为原始脚本引用了该目录中的证书。我希望cURL扫描目录中的文件并找到所需的证书,但是这没有发生。为什么是这样?

php ssl curl

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

Angular 2 Ahead-of-Time编译器是否支持SASS样式表?

我想再次尝试使用Angular 2Ahead-of-Time编译.

这将需要我的重大重构,因为我当前的设置使用需要更改的自定义构建过程.

在开始之前我需要知道:如果我链接到元数据中的外部.scss文件,styleUrlsAoT编译器是否可以工作?

@Component({
    ...
    styleUrls:['./app.component.scss'],
})
export class AppComponent {}
Run Code Online (Sandbox Code Playgroud)

或者我应该首先将所有样式转换.css为CSS样式表并链接到CSS样式表?

自述文件没有讨论这个问题.

compilation sass angular-compiler-cli angular

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

PHPDoc:总是产生自身或后代类的文档父类方法?

考虑这个代码:

class ParentClass {

    public static function generate($className = __CLASS__){
        if(!$className) return new self();
        else return new $className();
    }
}

class ChildClass extends ParentClass {

    /**
     * @param string $className
     * @return ChildClass
     */
    public static function generate($className = __CLASS__) {
        return parent::generate($className);
    }
}

var_dump($ChildClass::generate()); // object(ChildClass)[1]
Run Code Online (Sandbox Code Playgroud)

ChildClass::generate()返回ChildClass我使用它的任何地方的实例,因为我从不提供$className参数。问题是我的 IDE 给了我一个关于parent::generate()调用与记录的返回类型不匹配的警告:

在此处输入图片说明

我想通过向父方法添加文档来消除此警告。我可以:

@return ParentClass | ChildClass
Run Code Online (Sandbox Code Playgroud)

将这个添加到父方法中是可行的,但这并不实用,因为有很多子类,而且将来可能会有更多。我已经尝试了以下两种方法:

@return static
@return $className
Run Code Online (Sandbox Code Playgroud)

但这并没有使警告消失。是否有 PHPDoc 批准的方法来指示调用子类将始终返回?或者——更准确地说——$className将返回一个类型的类?如果没有,有没有一种方法可以在我的 IDE 中工作?( PhpStorm 2017.2)

更新

@gogaz …

php phpdoc phpstorm

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