小编luc*_*nov的帖子

MongoDB SpiderMonkey不了解UTF-8

如果我向MongoDB数据库添加非ASCII字符,那么所有db.find()都会告诉"检测到非ascii字符".

这是SpiderMonkey的问题,我必须使用UTF-8支持重建它.我试过这样做,如 http://www.mongodb.org/display/DOCS/Building+Spider+Monkey

但它不起作用(我完成所有步骤后没有安装SpiderMonkey).

我有Ubuntu 11.04.是否有人有指导如何使其工作

工作说明如何使用Google V8进行MongoDB工作也可以提供帮助.

v8 spidermonkey utf-8 mongodb

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

如何在后台运行自定义Symfony2命令

Symfony2使开发人员能够创建自己的命令行命令.它们可以从命令行执行,也可以从控制器执行.根据Symfony2官方文档,可以这样做:

protected function execute(InputInterface $input, OutputInterface $output)
{
    $command = $this->getApplication()->find('demo:greet');

    $arguments = array(
        ...
    );

    $input = new ArrayInput($arguments);
    $returnCode = $command->run($input, $output);

}
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,我们等待命令完成它的执行并返回返回代码.

如何从控制器执行命令将其分配到后台而不等待它完成执行?

换句话说,相当于什么

$ nohup php app/console demo:greet &
Run Code Online (Sandbox Code Playgroud)

php symfony

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

如何检查数组是否为空 - true或false

我有一个问题,如何为返回的函数设置条件,true或者false,如果我确定数组为空,但是isset()传递了它.

$arr = array();

if (isset($arr)) {
    return true;
} else {
    return false;
}
Run Code Online (Sandbox Code Playgroud)

在此表单中返回bool(true)var_dump显示array (0) {}.

php arrays

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

PHP:在Web浏览器中输出system/Shell_exec命令输出


我尝试使用shell_exec以与在终端中显示的方式(同时)相似的方式在网页上输出简单的ping命令; 但它只在完成执行后显示,而我需要它显示在终端上显示,

我的代码是

<?php
$i= shell_exec("ping -c 4 google.com");
echo "<pre> $i <pre>";
?>
Run Code Online (Sandbox Code Playgroud)

它正在等待一段时间并将整个东西倾倒在一个镜头上...... PHP可以识别每行的输出并将其显示在网页上

编辑
我也试过这个

    <?php
    $proc = popen("ping -c 4 google.com", 'r');
    echo '<pre>';
    while (!feof($proc)) {
        echo fread($proc, 4096);
    }
    echo '</pre>';
    ?>
Run Code Online (Sandbox Code Playgroud)

但我仍然得到相同的结果..

编辑
当我试图在终端中执行这个PHP代码时,(php test.php)它正常工作,就像我们直接在服务器上执行ping一样.但在网页上它仍然是相同的.

javascript php

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

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

MySQL错误 - 日期时间格式无效:1292日期时间值不正确:列为''

我在Os X 10.9.2中使用mysql,当我尝试在本地运行我的php网站时出现此错误:

日期时间格式无效:1292日期时间值不正确:列名称为"@OcTheColumn"

当我尝试在datetime字段中插入空值时发生错误.该网站在生产和其他一些本地计算机上工作正常,所以问题在于数据库,我必须在我的本地数据库中解决.阅读有关我读过的问题,mysql可以在Strict模式下运行,所以我编辑/usr/local/mysql/my.cnf并注释掉这一行:

 #sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
Run Code Online (Sandbox Code Playgroud)

我重新启动计算机仍然无法工作,但根据在线文档和其他问题,这是方法,但我想知道为了使我的应用程序正常工作,我必须做些什么改变.重复一遍,代码在生产中运行,windows与xampp等等...所以不能改变因为很长而且只是为了在本地工作我需要在MYSQL DATABASE中进行正确的更改.

提前致谢!

php mysql macos datetime

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

Symfony和Doctrine DQL查询构建器:如果条件检查,如何在内部使用多个setParame?

使用Symfony和Doctrine与DQL查询构建器,我需要选择添加一些带参数的WHERE条件,以及一些if条件检查.

伪代码示例:

$qb = $this->getEntityManager()->createQueryBuilder();
$qb = $qb
    ->select('SOMETHING')
    ->from('SOMEWHERE')
    ->where('SOME CONDITIONS');


if ( SOME CHECK ) {
    $qb
        ->andWhere('field1 = :field1')
        ->andWhere('field2 = :field2')
        ->setParameters([
            'field1' => $myFieldValue1,
            'field2' => $myFieldValue2,
        ]);
} else {
    $qb
        ->andWhere('field1 = :field1')
        ->setParameters([
            'field1' => $myOtherFieldValue1,
        ]);
}
Run Code Online (Sandbox Code Playgroud)

得到如下错误:

参数号无效:绑定变量数与令牌数不匹配

参数太少:查询定义X参数但您只绑定Y.

参数太多:查询定义X参数,您绑定Y.

php doctrine dql symfony doctrine-orm

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

使用Symfony Process使用PHP控制交互式进程

我试图通过使用ssh-add向其添加新密钥来控制系统ssh-agent.为此我正在使用Symfony Process组件.

当我从一个网站运行这个代码时它工作得很好但是当我在shell/console中运行相同的代码时,ssh-add进程挂起 Enter passphrase for <path to key>:

代码的简化版本看起来像这样

use Symfony\Component\Process\Process;

$keyPath = '<path to key>';
$keyPassword = '<password for unlocking the key>';
$socketPath = '<path to ssh-agent socket>';

$sshAdd = new Process(
    "ssh-add {$keyPath}",
    null,
    [
        'SSH_AUTH_SOCK' => $socketPath
    ],
    $keyPassword
);
$sshAdd->run();
Run Code Online (Sandbox Code Playgroud)

正如您在上面的代码中看到的那样,我打电话给ssh-add,SSH_AUTH_SOCK在环境中设置,以便ssh-add与代理交谈,然后在输入中发送密码.正如我之前所说,当我在Web上下文中运行它时,它可以工作但它挂在shell /控制台上下文中.

strace在控制台中运行时做了一个,相关部分看起来像这样

open("<path to key>", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
write(4, "<key password>", <length of password>)      = 20
close(4)                                              = 0 …
Run Code Online (Sandbox Code Playgroud)

php shell process symfony symfony-process

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

phpMyAdmin配置不适用于Centos 6.5

最近用yum安装了phpMyAdmin:

yum install phpmyadmin
Run Code Online (Sandbox Code Playgroud)

phpmyadmin已安装到

/usr/share/phpMyAdmin/ 
Run Code Online (Sandbox Code Playgroud)

但那里没有配置文件.

有一个config.inc.php文件

/etc/phpMyAdmin/config.inc.php
Run Code Online (Sandbox Code Playgroud)

正如phpMyAdmin文档所示(http://docs.phpmyadmin.net/en/latest/setup.html#linux-distributions - 阅读有关红帽企业Linux的内容)

但是,phpMyAdmin应用程序不会选择对该文件的更改.我试过把它的副本放在不同的位置:

/etc/phpMyAdmin/config/config.inc.php
/usr/share/phpMyAdmin/config.inc.php
/usr/share/phpMyAdmin/config/config.inc.php
Run Code Online (Sandbox Code Playgroud)

没有成功.这些文件都不用作配置,并且它们都具有正确的权限(a + rwx),其父目录也是如此.

有谁知道为什么这不起作用?命名文件config.inc.php是对的,对吧?

phpmyadmin

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

现代浏览器中的跨站点身份验证,无需第 3 方 cookie

系统有多个部分位于不同的域(而不是子域)。在用户登录任何域后,我需要在所有域中对用户进行身份验证,而无需用户进行任何交互。

过去我在公共域中使用 cookie。现在这是不可能的 - https://developer.chrome.com/docs/privacy-sandbox/chips/

然后我们使用带有 LocalStorage 的 iframe 和 postMessage 到父窗口 - https://github.com/zendesk/cross-storage。它最近也停止工作,因为现在不同的域对于公共域有单独的 LocalStorage - https://developer.chrome.com/docs/privacy-sandbox/storage-partitioning/

Chrome 已经宣布了可能的解决方案:SharedStorage - https://developer.chrome.com/docs/privacy-sandbox/shared-storage/但是:

  • 它在 Safari 中不起作用(MacOS 和 iOS 用户对我们很重要)
  • 您必须以公司身份申请并注册您的域名(对我们来说不是问题,但对于舞台和开发环境来说不方便)

我只看到一种防弹解决方案:

  • 将所有未经授权的用户重定向到公共域
  • 公共域生成随机令牌(或从 cookie/localstorage 中获取(如果存在))并使用此令牌重定向回原始 URL
  • 域尝试使用此令牌进行身份验证
  • 如果未经过身份验证,则在登录/注册期间添加此令牌,以便下次它将自动登录用户
  • 注销期间删除此用户令牌,使其不再有效

这对于用户来说是糟糕的 UI - 2 个额外的重定向;似乎过于复杂。

也许有一个更好的解决方案可以在现代浏览器中工作?

authentication safari privacy google-chrome local-storage

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