小编Muc*_*Muc的帖子

symfony2会话生存期

我遇到了symfony2会话组件的问题.我通过会话容器将一些数据设置为会话,如下所示:

$sess = $this->get( 'session' );
$sess->set( 'some_key', 'some_value' );
Run Code Online (Sandbox Code Playgroud)

但经过一段时间(大约15-20分钟)后,会议就丢失了.

我可以设置会话生存时间参数吗?对我而言,完美的变体就是如果我可以设定一定的会话时间......有人可以帮忙吗?

session symfony

29
推荐指数
3
解决办法
5万
查看次数

Php类型暗示不与接口和抽象类相处?

我认为在代码示例中查看问题要比首先编写问题容易得多.这是我的PHP代码:

<?php

interface AnInterface
{
        public function method();
}    

class AClass implements AnInterface
{
        public function method()
        {
                echo __METHOD__;
        }
}    

abstract class AnAbstractClass
{
        abstract public function method( AnInterface $Object );
}

class ConcreteClass extends AnAbstractClass
{
        public function method( AClass $Object )
        {
                $Object->method();
        }
}

$Object1 = new ConcreteClass();
$Object2 = new AClass();

$Object1->method( $Object2 );
Run Code Online (Sandbox Code Playgroud)

上面的代码导致以下错误:

致命错误:ConcreteClass :: method()的声明必须与AnAbstractClass :: method()的声明兼容

问题是php似乎没有将AnAbstractClass :: method和ConcreteClass :: method的签名识别为兼容.难道我做错了什么?谢谢!

php abstract-class types interface

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

如何使用nginx启用xdebug?

我的情况如下:

我有一个VM(Ubuntu服务器13.04)与PHP 5.4.9-4ubuntu2.2,nginx/1.2.6,php5-fpm和Xdebug v2.2.1.

我正在使用PhpStorm 6.0.3开发一个应用程序(我在VM上部署).

我的问题是,每当我尝试启动调试会话时,IDE都不会从Web服务器获取连接请求(因此,会话永远不会启动).

我查看了很多关于xdebug配置的建议,但没有发现任何有用的东西.

我最近意识到,如果我通过浏览器自己设置XDEBUG_SESSION cookie(感谢FireCookie),我可以调试我的应用程序...所以我的猜测是有一些东西阻止网络服务器将cookie发送回客户端.

问题是,我在不同的项目中使用相同的IDE配置,该项目部署到不同的基于CentOS的VM(使用lighttpd),并且工作得很好.

我试图将我当前的项目部署到这样的VM(将Web服务器更改为NginX)并且它工作正常(不幸的是我丢失了该VM并且无法检查配置:().

所以...这是我的NginX配置:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;
    server_name localhost;

    location / {
        try_files $uri $uri/ /dispatch.php;
    }

    #
    location ~ \.php$ {
        root /var/www/bresson/web;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index  dispatch.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/$fastcgi_script_name;
        include fastcgi_params;
        #fastcgi_pass   127.0.0.1:9009;
    }

}
Run Code Online (Sandbox Code Playgroud)

fpm config(/etc/php5/fpm/pool.d/www.conf):

listen = /var/run/php5-fpm.sock
Run Code Online (Sandbox Code Playgroud)

xdebug.ini:

zend_extension=/usr/lib/php5/20100525/xdebug.so
xdebug.remote_port=9000
xdebug.remote_enable=On
xdebug.remote_connect_back=On
xdebug.remote_log=/var/log/xdebug.log
Run Code Online (Sandbox Code Playgroud)

任何想法将不胜感激.谢谢!

编辑:

我尝试的另一件事是从php开始一个会话,我看到会话cookie创建没有任何问题...

第二编辑:

我想我找到了问题所在:URI.

我写了另一个脚本,以尝试配置参数和东西(更简单的一个),它工作正常!

所以最终我认为问题是查询参数(即:) XDEBUG_SESSION_START=14845没有达到我的脚本.

问题是我的起始URI,它是形式的/images/P/P1/P1010044-242x300.jpg.通过一些虚拟主机配置,我应该能够将其路由到类似的东西/dispatch.php/images/P/P1/P1010044-242x300.jpg,并使用URI的其余部分作为参数.所以...我本身没有找到解决方案,但现在我有一个可行的解决方法(指向我的起始URL /dispatch.php),这将暂时做到这一点.谢谢

xdebug nginx

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

获取多维数组中特定列的所有值

我有一个多维数组,比如x列数和y行数.

我特别想要第3列中的所有值.

这样做的显而易见的方法是将它放在这样的for循环中

for(i=0;i<y-1;i++)
{
   $ThirdColumn[] = $array[$i][3];
}
Run Code Online (Sandbox Code Playgroud)

但是这里涉及O(n)的明显时间复杂性.有没有内置的方法让我只需从数组中提取每一行而无需循环.

例如(这不适用)

$ThirdColumn  = $array[][3]
Run Code Online (Sandbox Code Playgroud)

php arrays multidimensional-array

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

使用Doctrine迁移重命名表名

我几乎到处搜索,但我找不到任何东西.

是否有一个命令或程序来更改表的名称(所以在doctrine内部注释)而不丢失数据?

基本上,会产生类似的东西

RENAME TABLE old_table TO new_table;
Run Code Online (Sandbox Code Playgroud)

要么

ALTER TABLE old_table RENAME new_table;
Run Code Online (Sandbox Code Playgroud)

MySQL命令取自这里

我应该手动编写迁移文件doctrine:migrations:generate吗?

symfony doctrine-orm doctrine-migrations

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

如何使用带有php api的SendGrid模板发送电子邮件?

我最近在我的SendGrid帐户中创建了一个模板,我想在我的php应用程序中使用它.

我目前正在使用该帐户发送电子邮件,但我必须在我的应用程序内编码html,这不能提供我需要的灵活性.

我在API中找不到一个方法来选择我想要使用的模板并替换变量....

任何的想法?

谢谢

php sendgrid

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

有没有办法使用symfony2实体验证作为学说验证?

我正在开发一个使用几种形式的Symfony2应用程序.表单中的数据使用Doctrine2持久保存到MySQL数据库中.我使用Symfony注释对实体设置了一些约束.现在,当用户无法在表单中输入适当的数据时,他会得到一条错误消息,但是,当我尝试使用Command对象操作相同的实体时,我不会得到任何异常或错误.

从我阅读的文档中,Symfony和Doctrine的验证工作作为单独的机制,现在......有没有办法让它们作为一个整体工作?我试图避免的是为实体对象编写相同的验证,以便将它们用作前端和后端验证.谢谢.

symfony doctrine-orm

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

是否可以使用PHP在Linux中访问COM对象?

一个朋友向我展示了一个由COM对象和SOAP接口构成的API。他向我展示了它如何在Windows上的php中工作,但是我严重怀疑它是否可以在linux或任何其他非Windows操作系统上实现。谢谢!

.net php com

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