小编Pio*_*ski的帖子

使用SSL的流套接字

我在PHP 5.6中遇到了流套接字和SSL的问题.似乎SSL正在缓冲输出.在下面的示例中,"ehlo"命令被忽略(服务器没有响应).但是当在"ehlo"之后发送其他内容时,例如在另一次调用中的新行fwrite,服务器发送响应.

$errno = '';
$errstr = '';
$timeout = 5;
$streamContext = stream_context_create();
$host = 'ssl://smtp.some.server.com:465';
$stream = stream_socket_client($host, $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $streamContext);
stream_set_blocking($stream, 1);
stream_set_timeout($stream, $timeout);
stream_set_write_buffer($stream, 0);

$fgets = fgets($stream);
print_r($fgets);

fwrite($stream, "ehlo [127.0.0.1]\r\n");

$response = '';
do {
    $line = fgets($stream);
    $response .= $line;
} while (null !== $line && false !== $line && ' ' != $line{3});

print_r($response);

fclose($stream);
Run Code Online (Sandbox Code Playgroud)

我得到了回复:

220 epicserver.net.pl ESMTP IdeaSmtpServer v0.80.2 ready.

(这是从第一次开始print_r).

但是在线后:fwrite($stream, "ehlo …

php sockets ssl smtp

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

我尝试从PhpStorm运行PHPUnit时出错

当我尝试在IDE PhpStorm中运行PHPUnit测试时,我没有什么问题.

我使用的composer文件看起来像:

{
    "require": {
        "phpunit/phpunit": "3.7.19"
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,当我运行测试时,我会发现异常: PHP Fatal error: Uncaught exception 'PHPUnit_Framework_Exception' with message 'Class "PHPUnit_Extensions_RepeatedTest" does not extend PHPUnit_Framework_TestCase.'

怎么了?当我加入梨装版本测试工作正常.

// 编辑 示例测试类:

 class ReaderTest extends PHPUnit_Framework_TestCase
    {
        /**
         * @test
         */
        public function shouldGetReadedValue ()
        {
            $this->assertTrue(true);
        }
    }
Run Code Online (Sandbox Code Playgroud)

// EDIT2 跟踪:

/usr/bin/php /tmp/ide-phpunit.php --no-configuration /path/to/my/project
Testing started at 14:53 ...
PHP Fatal error:  Uncaught exception 'PHPUnit_Framework_Exception' with message 'Class "PHPUnit_Extensions_RepeatedTest" does not extend PHPUnit_Framework_TestCase.' in /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php:183
Stack trace:
#0 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php(315): PHPUnit_Framework_TestSuite->__construct(Object(ReflectionClass))
#1 …
Run Code Online (Sandbox Code Playgroud)

php testing phpunit phpstorm composer-php

18
推荐指数
3
解决办法
2万
查看次数

使用PHPUnit测试error_log

我有这个功能,我想测试看起来像这样:

class Logger {
  function error($msg){
    if (is_string($msg)){
      error_log($msg);
      die($msg);
    } elseif (is_object($msg)){
      error_log($msg.' '.$msg->getTraceAsString());
      die('exception');
    } else {
      var_dump($msg);
      die('error');
    }
  }
Run Code Online (Sandbox Code Playgroud)

我想测试这个功能而不记录$msg.有没有办法确定error_log没有记录是否有效?我尝试使用,setExpectedException但我无法捕获错误,它一直在记录.

php phpunit

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

如何在PHPUnit中测试STDIN

我有读取器类从stdin读取并返回readed值.

class Reader 
{
    const STREAM_READ = 'php://stdin';

    private $_streamHandle;

    public function __construct($stream = self::STREAM_READ)
    {
        $this->_streamHandle = fopen($stream, 'r');
    }

    public function getReadedValue()
    {
        $value = trim(fgets($this->_streamHandle));

        return $value;
    }

    public function __destruct()
    {
        fclose($this->_streamHandle);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在是我的问题,我如何测试这个类,从stdin读取一些东西并按getReadedValue()函数返回readed值?

php testing tdd bdd phpunit

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

如何向下滚动到动态添加的ul中的最后一个li项目?

我有一个ul定义的喜欢

 <div>
   <ul id="mylist">
   </ul>
 </div>
Run Code Online (Sandbox Code Playgroud)

在我的javascript中,我使用jquery将li项添加到此ul

$("mylist").append("<li>Test</li>");
Run Code Online (Sandbox Code Playgroud)

我希望我的ul自动向下滚动div,当我添加了很多li项目并且ul超过为它定义的高度时

我尝试过的事情:

  1. 在CSS中我设置了一个max-height和overflow-y:滚动ul
  2. 在Javascript中我做了$("mylist li").last().focus();

javascript css jquery

7
推荐指数
3
解决办法
2万
查看次数

直接流上传到Amazon S3时无HTTP响应

我目前有一个从远程URL抓取mp3文件的功能,并将其上传到Amazon S3存储桶.

该函数似乎工作正常,因为该文件出现在S3中,但是我担心在使用隧道(ngrok)在我的本地服务器上测试时,页面似乎没有返回任何HTTP状态.

当我首先在本地下载文件然后上传它时它确实返回200.当我们处理大型音频文件时,我试图让第一个想法发挥作用,因为它更有效(我认为).

有没有办法让页面返回HTTP状态代码,我应该担心它目前没有?

以下是在PHP中使用V2 Amazon SDK的代码段

$config = array('key' => AMAZON_S3_KEY,'secret' => AMAZON_S3_SECRET,'region' => 'us-west-2'); 

$s3 = Aws::factory($config)->get('s3')->registerStreamWrapper();
$s3->putObject(array(
    'Bucket' => 'mybucket',
    'Key'    => 'filename.mp3',
    'ContentLength' => $size,
    'Body'   => fopen($url, 'r')
));
Run Code Online (Sandbox Code Playgroud)

php fopen http amazon-s3 amazon-web-services

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

Swagger ApiModelProperty 不起作用

@ApiModelProperty我有一个大摇大摆的问题。在我的模型中,我@ApiModelProperty这样使用

private static final long serialVersionUID = -7142106197262010406L;

private int brandId;
private String brandName;
private String fullName;
private String webSite;
private String logoUrl;
private String note;

@ApiModelProperty(position = 1, required = true, value="")
public int getBrandId() {
    return brandId;
}

public void setBrandId(int brandId) {
    this.brandId = brandId;
}

@ApiModelProperty(position = 2, required = true)
public String getBrandName() {
    return brandName;
}

public void setBrandName(String brandName) {
    this.brandName = brandName;
}

@ApiModelProperty(position = 3, required = true) …
Run Code Online (Sandbox Code Playgroud)

java swagger

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

PHPUnit模拟父方法

我有模拟父方法的问题,这是一个例子:

class PathProvider
{
    public function getPath()
    {
        return isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '/';
    }
}


class Uri extends PathProvider
{
    public function getParam($param)
    {
        $path = $this->getPath();

        if ($path == $param)
            return 'OK';
        else
            return 'Bad';
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想要模拟方法getPath(),并调用方法getParam()来获取模拟值.

$mock = $this->getMock('PathProvider');

$mock->expects($this->any())
->method('getPath')
->will($this->returnValue('/panel2.0/user/index/id/5'));
Run Code Online (Sandbox Code Playgroud)

我写这部分,但我不知道如何将这个模拟值传递给测试方法.

php phpunit unit-testing mocking

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

mb_detect_encoding无法正常使用Windows-1250(CP1250)

我在mb_detect_encoding()中检测CP1250时遇到问题,在我的情况下我想要检测3个编码:

mb_detect_encoding($string, 'UTF-8,ISO-8859-2,Windows-1250')
Run Code Online (Sandbox Code Playgroud)

但Windows不支持编码,任何解决方案?

php encoding cp1250

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

在PHP中搜索partilcular数字

我一直在研究一个需求(在PHP中),我坚持使用下面的内容.

我需要搜索6800到6899之间的数字.如何使用字符串'68'搜索.这样我就可以获得该范围内的所有数字.

现在,我有一个想法:

if ($Model== 'Jazz6800i') return true;
if ($Model== 'Jazz6801i') return true;
......
if ($Model== 'Jazz6899i') return true;
Run Code Online (Sandbox Code Playgroud)

我们有没有替代PHP,而不是编写很多代码,从68开始搜索?

php

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

Swiftmailer在1and1主持

我在1and1主机上发送电子邮件进行故障排除.

我使用的swift邮件程序lib消息是stream_socket_client(): unable to connect to mrvnet.kundenserver.de:0 http://mrvnet.kundenserver.de:0 (Connection timed out).

有没有人有类似的麻烦?有解决方案吗

PS.在我的localhost一切都很好.

php hosting smtp swiftmailer

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