在Symfony中上传大于post_max_size的文件时,上传的文件将在内存中分配.
致命错误:第28行的/Applications/MAMP/htdocs/Symfony/vendor/symfony/src/Symfony/Component/HttpKernel/DataCollector/DataCollector.php中允许的内存大小为150994944字节(试图分配84627994字节)
为什么symfony试图在POST时将文件分配给内存?
1/php.ini
file_uploads = On
upload_tmp_dir = /Applications/MAMP/tmp/php
upload_max_filesize = 32M
post_max_size = 48M
Run Code Online (Sandbox Code Playgroud)
2 /控制器
<?php
//AcmeDemoBundle/Controller/DemoController
namespace Acme\DemoBundle\Controller;
use Symfony\Component\HttpFoundation\Request;
class DemoController extends Controller
{
public function createAction(Request $request)
{
if ($request->getMethod() == 'POST')
{
if ($_FILES["file"]["size"] < 3000000 )//3Mb
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
if (empty($_POST) && empty($_FILES) && isset($_SERVER['REQUEST_METHOD']) && strtolower($_SERVER['REQUEST_METHOD']) == 'post')
{
echo "The file is …Run Code Online (Sandbox Code Playgroud) 我几乎完成了用Symfony2开发的项目的开发,并希望将项目放到网上.
但是,我想有很多事情需要做,以便一切正常.我想,开发模式需要被禁用等等......需要做什么以及如何做?
我无法将数组从symfony 2控制器传递到TWIG模板.我在控制器中使用此代码:
$searchTerms['color'] = "Red";
return $this->render('TestBundle::search.html.twig',
array(
"searchTerms" => $searchTerms));
Run Code Online (Sandbox Code Playgroud)
在twig模板中,我试图像这样访问变量:
两者都没有输出,空字符串,所以看起来数组来到模板但它的元素是空的.
怎么了?
使用参数,而不是直接在查询字符串将值做是为了防止SQL注入攻击,应始终做到:
... WHERE p.name > :name ...
->setParameter('name', 'edouardo')
Run Code Online (Sandbox Code Playgroud)
这是否意味着如果我们使用这样的参数,我们将始终受到SQL注入的保护?在使用表单(FOS的注册表单)时,我<b>eduardo</b>改为使用标签将其保存到数据库中.我真的不明白为什么使用参数可以防止SQL注入......
为什么标签会像这样持久存储到数据库中?有没有办法通过使用Symfony的验证组件删除标签?
在Symfony中保存数据库之前,我们应该使用一般的提示或方法吗?
我有一个id数组:
Id_array; //array(2) { [0]=> int(9) [1]=> int(10) }
Run Code Online (Sandbox Code Playgroud)
我只想选择使用Id_array的用户; 当我没有数组而只是一个整数时,我设法做到了这一点:
$query = $em->createQuery('SELECT u FROM Users u WHERE u.id = ?1');
$query->setParameter(1, 9); // I tested the value 9 here
$users = $query->getResult();
Run Code Online (Sandbox Code Playgroud)
如何获取与Id_array对应的所有用户?
我有不同的布局,具体取决于用户.这会触发以下错误:
"Multiple extends tags are forbidden".如何根据用户的角色设置使用不同的布局?
{% if is_granted('ROLE_USER_ONE') %}
{% extends "AcmeUserBundle::layout_user_one.html.twig" %}
{% elseif is_granted('ROLE_USER_TWO') %}
{% extends "AcmeUserBundle::layout_user_two.html.twig" %}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
这是答案.我将使用3个用户的情况,以防人们想知道如何做到这一点.在这种情况下,如果有人对该陈述有疑问,admin也有特权userOne和userTwo特权else.我Conditional Inheritance在这种情况下使用,但正如其中一个答案中所建议的那样,Dynamic Inheritance可能更具可读性.
{% set admin = false %}
{% set userOne = false %}
{% set userTwo = false %}
{% if is_granted('ROLE_ADMIN') %}
{% set admin = true %}
{% else %}
{% if is_granted('ROLE_USER_ONE') %}
{% …Run Code Online (Sandbox Code Playgroud) 我使用Symfony2开发了一个Web应用程序.我使用FOSUserBundle进行用户管理和安全性.
现在我正在考虑为我的网络开发原生iOS APP,并且不知道如何解决从APP创建会话的问题,并在整个交互用户APP中对其进行管理.
换句话说,我想确保当我这样做时NSURLRequest,会以某种方式发送会话令牌以允许服务器关联同一会话中的所有请求.
在PHP端创建会话时有什么特别的事吗?处理来自iOS APP的请求时有什么特别的事吗?
你能否提一些好文章来学习如何实现这种方法?我想从开始做好.
提前致谢
我正在使用FOSUserBundle进行身份验证和角色.对于管理员面板,我使用的是SonataAdminBundle.
FOSUserBundle Version 2.0.dev(支持事件监听器).
当我尝试安装SonataUserBundle时,它只接受<= 1.3版本的FOSUserBundle(没有事件监听器)
我需要FOSUserBundle和事件监听器.
有谁知道如何使用FOSUserBundle提供安全性(对于管理员和客户端面板)?
在Symfony中,很容易在控制器中获取请求:
$request = $this->container->get('request');
Run Code Online (Sandbox Code Playgroud)
现在,我认为这是一个不好的做法...但是可以修改该请求,这意味着,例如在绑定之前修改隐藏表单字段的值:
$requestModifiedWithNewValueForHiddenFormField = $request;
// modify the request
// ....
$this->bind($requestModifiedWithNewValueForHiddenFormField);
Run Code Online (Sandbox Code Playgroud)
我想我应该使用dataTransformer,但在这种情况下,我想对修改请求有你的意见......
有没有办法按Title字段中包含的字符串的长度来命令此查询?
$query = $this->getEntityManager()
->createQuery('
SELECT b FROM AcmeTestBundle:Blog b
WHERE b.Title LIKE :title'
)->setParameter('title','%'.$title.'%');
Run Code Online (Sandbox Code Playgroud)
ORDER BY b.Title.length() 似乎不起作用.
我正在尝试在Symfony2中设置一个控制台命令,以便它在我的开发环境中记录到控制台,但是在prod中记录到日志文件.
所以我的config_prod.yml有这个:
monolog:
handlers:
payment:
type: stream
path: %kernel.logs_dir%/payment.log
channels: payment
Run Code Online (Sandbox Code Playgroud)
而我的config_dev.yml使用这个:
monolog:
handlers:
console:
type: console
channels: payment
Run Code Online (Sandbox Code Playgroud)
并且服务在services.yml中定义如下:
payment_manager:
class: My\Bundle\Service\PaymentManager
arguments: [@doctrine.orm.entity_manager, @logger]
tags:
- { name: monolog.logger, channel: payment }
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,这确实没有蹲下.输出转到app/logs/dev.log而不是控制台.为什么?