我正在尝试部署我的第一个Symfony2应用程序.
尝试访问时出现空白屏幕.
检查日志:
$ sudo tail -f /var/log/apache2/error.log
Run Code Online (Sandbox Code Playgroud)
[...]未捕获的异常'RuntimeException',消息'无法写入缓存文件[...]
试图将好的权利放在缓存和日志上
$ sudo chmod +a "www-data allow delete,write,[...]" app/cache app/logs
Run Code Online (Sandbox Code Playgroud)
chmod:无效模式:`+ a'
尝试使用setfacl
$ sudo setfacl -R -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs
Run Code Online (Sandbox Code Playgroud)
setfacl:app/cache:不支持操作
setfacl:app/logs:不支持操作
我想我的分区没有安装acl或类似的东西.
难道我不能简单地chown www-data cache&logs?
我正在使用注释来定义控制器中的路由,我有15个控制器.全部由/path1,执行/path2.
有没有办法在所有控制器中,我可以通过/admin/path1和访问它们/admin/path2?
我不想通过更改每个文件来输入它.
我可以从一个地方做到吗?我的意思是整个捆绑应该通过/admin然后打开它们各自的路径.
我正在Symfony中编写一个SOAP应用程序,对于我的所有请求,我收到了一个错误Procedure 'getClusterName' not present.
奇怪的是,当我在纯PHP中创建测试SOAP应用程序时,它工作正常,但Symfony中的相同代码返回错误.
另一个奇怪的事情是,当我在SOAP服务器代码中列出可用的服务函数时$server->getFunctions(),它返回服务函数的getClusterName数组并且在该数组中.所以该功能对于服务器是已知的,但它无法调用它.
在Symfony中编写服务时,我遵循了本文,这是我的代码:
客户:
namespace Prj\SoapBundle\Controller;
class SoapController extends Controller
{
public function indexAction()
{
$client = new \SoapClient('http://localhost/test.wsdl');
$client->getClusterName();
Run Code Online (Sandbox Code Playgroud)
服务器:
namespace Prj\SoapBundle\Controller;
class SoapController extends Controller
{
public function indexAction()
{
ini_set("soap.wsdl_cache_enabled", "0");
$server = new \SoapServer($this->container->getParameter('wsdl'));
$server->setClass('SoapBundle\HelloService');
$server->handle();
Run Code Online (Sandbox Code Playgroud)
服务:
namespace Prj\SoapBundle;
class HelloService
{
public function getClusterName()
{
return '<?xml version="1.0" encoding="utf-8"?><root>Hello!</root>';
}
}
Run Code Online (Sandbox Code Playgroud)
*.wsdl文件似乎是正确的,因为它将调用与控制器绑定,并与vanilla PHP服务一起正常工作.
在Internet上,此错误通常由缓存的wsdl解释,但这是通过将soap.wsdl_cache_enabled参数设置为零来在服务器代码中处理的.
我目前正致力于一个小型在线游戏的成就系统.成就实体基本上有4个属性:
最后一个应该是百分比,意味着0到100之间的数字.为了确保数据库中没有保存大于100或小于0的数字,我的setter方法看起来如下(我正在使用Symfony2/Doctrine ORM):
public function setProgress($progress)
{
$this->progress = max(min($progress, 100), 0);
return $this;
}
Run Code Online (Sandbox Code Playgroud)
这里的重要一点是max(min($progress, 100), 0).
它工作得很好,我只是想问,如果PHP中还有另一个内置函数正在做那件事,如果我正在做的事情是好的(关于良好的开发风格)
我正在创建一个社交网络.它有几个实体,如新闻,照片,可以有评论.由于所有注释都具有相同的列并且行为方式相同,唯一的区别是它们的类型 - 新闻,照片或将来要添加的其他内容 - 我决定使用名为列的所有注释创建一个表type.它工作得很好,直到我决定将外键添加到我的数据库模式.
该comment表具有一个柱parent,它是指id的news或photo表,这取决于塔type.
问题是,我不能添加一个引用未知表的外键,甚至更多,它一次引用几个表.
整个数据库现在使用外键,除了表parent中的这一列comment.它困扰我,因为它是我无法添加外键的唯一地方.
我敢肯定我不能创造这样的外键; 我的数据库设计中的某些东西需要改变.我决定创建一个评论表,准备为将来的新实体添加新的评论类型 - 视频,音乐,文章等 - 当我想为所有评论添加一个新列时,不要遇到维护地狱.
如果我必须为每个注释类型创建一个单独的表,以便能够完全使用外键,我会这样做.但也许这个问题的另一个常见解决方案已经存在,我只是不知道它?
也许我应该创建某种链接表,将comment表与其他实体的表链接起来?但也许这个解决方案比为每个评论类型创建一个单独的表更复杂?
也许我应该在comment表中有几列,比如newsId,photoId我可以添加外键吗?
这些解决方案对我来说似乎并不优雅,或者我只是误解了一些东西.我对这个问题的全部看法可能是完全错误的.这就是我在这里的原因.请分享您的想法.
我在MatLab中实现了一个非常愚蠢的xPath过滤器:
% Construct the DOM.
docNode = xmlread('C:\Users\MATLAB\test.gpx');
% get the xpath mechanism into the workspace
import javax.xml.xpath.*
factory = XPathFactory.newInstance;
xpath = factory.newXPath;
% compile and evaluate the XPath Expression
expression = xpath.compile('gpx/AddressBook/Entry/PhoneNumber');
phoneNumberNode = expression.evaluate(docNode, XPathConstants.NODE);
phoneNumber = phoneNumberNode.getTextContent
Run Code Online (Sandbox Code Playgroud)
使用此XML(特别是.gpx文件),它可以工作:
<?xml version='1.0' encoding='ISO-8859-1' standalone='yes' ?>
<gpx version='1.1' creator='TTTracklog V.1.13'>
<AddressBook>
<Entry>
<Name>Friendly J. Mathworker</Name>
<PhoneNumber>(508) 647-7000</PhoneNumber>
<Address hasZip="no" type="work">3 Apple Hill Dr, Natick MA</Address>
</Entry>
</AddressBook>
</gpx>
Run Code Online (Sandbox Code Playgroud)
并返回文本(508)647-7000.只需以这种方式将xmlns属性添加到gpx节点:
<?xml version='1.0' encoding='ISO-8859-1' standalone='yes' ?>
<gpx version='1.1' creator='TTTracklog V.1.13' xmlns='http://www.topografix.com/GPX/1/1'> …Run Code Online (Sandbox Code Playgroud) 我正在为网络编写一个很大的Red5 Java应用程序.Red5是基于Java的Flash Media Server替代方案,使用spring框架编写.
我想在线申请我的应用程序的许多版本,每个版本都有不同的行为,不同的类启用或禁用.
我正在寻找一种方法将我的代码转换为基于模块的代码,这将允许我从主应用程序中删除/添加模块/功能.
我知道OSGI http://www.springsource.org/osgi,但它说它需要一个SpringSource dm服务器,我不知道它将如何在red5中一起工作,而且完全理解它似乎非常复杂.
我一般都不太了解spring框架,我使用它与db相关,就是这样.red5更广泛地使用它.
所以任何人都可以从这些信息中获得任何意义吗?有什么可以把我的代码分成模块吗?
任何有关该问题的信息将不胜感激.
我有3个简单的表:user,role,user_x_role with Many-To-Many relation.我有2个实体:用户和角色.用户实体具有带有关系注释的$ userRoles属性.在Controller中,我需要获取具有特定角色的所有用户.但我不知道如何在控制器中使用JOIN.目前错误的代码:
$role = $this->getDoctrine()->getRepository('TestBackEndBundle:Role');
$roles = $role->findBy(array('name' => 'ROLE_PARTNER'));
$user = $this->getDoctrine()->getRepository('TestBackEndBundle:User');
$partners = $user->findBy(array('userRoles' => $roles));
Run Code Online (Sandbox Code Playgroud)
它显示"Undefined index:joinColumns in ...".但我在用户实体中有joinColumns:
/**
* @ORM\ManyToMany(targetEntity="Role")
* @ORM\JoinTable(name="user_x_role",
* joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE", onUpdate="CASCADE")},
* inverseJoinColumns={@ORM\JoinColumn(name="role_id", referencedColumnName="id", onDelete="CASCADE", onUpdate="CASCADE")}
* )
* @var ArrayCollection
*/
protected $userRoles;
Run Code Online (Sandbox Code Playgroud) 我们从Symfony 2.0升级到2.1.使用2.0,我用来修改实体并重新加载表单,如下所示:
$form->setData($entity);
Run Code Online (Sandbox Code Playgroud)
但是Symfony 2.1(https://github.com/symfony/symfony/pull/3322)不允许这样做.我收到以下错误:
You cannot change the data of a bound form
Run Code Online (Sandbox Code Playgroud)
有没有办法将表单重新绑定到实体/重新加载数据?
我有以下堆栈:
在base.css我有:
// base.less
@import '/path/to/bootstrap.less'
@linkColor: 13px;
Run Code Online (Sandbox Code Playgroud)
变量名称根本不重要.它可以是bootstrap中使用的任何其他变量.它只是没有被覆盖.但是,如果我将变量放入单独的.less文件并将其导入base.less,一切都按预期工作:
// base.less
@import '/path/to/bootstrap.less'
@import '/path/to/variables.less'
Run Code Online (Sandbox Code Playgroud)
和
// variables.less
@linkColor: 13px;
Run Code Online (Sandbox Code Playgroud)
为什么这样做而另一个没有?查找文档(less/lessphp)但找不到与此相关的任何内容.(或者我不知道在哪里看).
有人能解释为什么会这样吗?
symfony ×7
php ×4
doctrine ×2
attributes ×1
caching ×1
database ×1
debugging ×1
deployment ×1
doctrine-orm ×1
foreign-keys ×1
java ×1
less ×1
lessphp ×1
matlab ×1
module ×1
red5 ×1
soap ×1
spring ×1
symfony-2.1 ×1
xml ×1
xpath ×1