Symfony 学说数据加载分段错误
Posted
技术标签:
【中文标题】Symfony 学说数据加载分段错误【英文标题】:Symfony doctrine data-load segmentation fault 【发布时间】:2011-03-17 14:51:47 【问题描述】:我正在学习 Symfony Jobeet 教程,但在尝试从我的设备文件中加载数据时遇到了分段错误。
php 5.2.6-1+lenny8 和 Suhosin-Patch 0.9.6.2 (cli), S symfony 1.4.5 版
我正在使用 Doctrine 插件。
下面是我的固定装置:
/data/fixtures/categories.yml
JobeetCategory:
design:
name: Design
programming:
name: Programming
manager:
name: Manager
administrator:
name: Administrator
/data/fixtures/jobs.yml
JobeetJob:
job_sensio_labs:
JobeetCategory: programming
type: full-time
company: Sensio Labs
logo: sensio-labs.gif
url: http://www.sensiolabs.com/
position: Web Developer
location: Paris, France
description: |
You've already developed websites with symfony and you want to work
with Open-Source technologies. You have a minimum of 3 years
experience in web development with PHP or Java and you wish to
participate to development of Web 2.0 sites using the best
frameworks available.
how_to_apply: |
Send your resume to fabien.potencier [at] sensio.com
is_public: true
is_activated: true
token: job_sensio_labs
email: job@example.com
expires_at: '2010-10-10'
job_extreme_sensio:
JobeetCategory: design
type: part-time
company: Extreme Sensio
logo: extreme-sensio.gif
url: http://www.extreme-sensio.com/
position: Web Designer
location: Paris, France
description: |
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in.
Voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa
qui officia deserunt mollit anim id est laborum.
how_to_apply: |
Send your resume to fabien.potencier [at] sensio.com
is_public: true
is_activated: true
token: job_extreme_sensio
email: job@example.com
expires_at: '2010-10-10'
expired_job:
JobeetCategory: programming
company: Sensio Labs
position: Web Developer
location: Paris, France
description: Lorem ipsum dolor sit amet, consectetur adipisicing elit.
how_to_apply: Send your resume to lorem.ipsum [at] dolor.sit
is_public: true
is_activated: true
created_at: '2005-12-01 00:00:00'
token: job_expired
email: job@example.com
<?php for ($i = 100; $i <= 130; $i++): ?>
job_<?php echo $i ?>:
JobeetCategory: programming
company: Company <?php echo $i."\n" ?>
position: Web Developer
location: Paris, France
description: Lorem ipsum dolor sit amet, consectetur adipisicing elit.
how_to_apply: |
Send your resume to lorem.ipsum [at] company_<?php echo $i ?>.sit
is_public: true
is_activated: true
token: job_<?php echo $i."\n" ?>
email: job@example.com
<?php endfor ?>
我完全按照教程中的说明进行操作,我在第 7 天 (http://www.symfony-project.org/jobeet/1_4/Doctrine/en/07) 创建工作类别模块,然后更新数据库。
我真的不确定是什么原因造成的。
有什么想法吗?
谢谢
【问题讨论】:
尝试打开 XDebug 跟踪,您可能会看到哪一行变得愚蠢。 xdebug.org/docs/execution_trace 【参考方案1】:分段错误通常是不正确的操作码缓存或损坏的模块。我会先禁用像 apc 这样的操作码缓存,如果问题仍然存在,请继续禁用 php-modules 以确定哪个会给你带来问题。
如果还是不行,请尝试升级 php(5.2.13 或 5.3.2 被认为是稳定的),如果问题在最小用例中仍然存在,请向 bugs.php.net 报告错误。
【讨论】:
感谢您的帮助。但是我认为这可能与 symfony 相关。我当前项目中的 symfony 和固定装置/模式的新副本正在正常加载。我的某个模型文件中一定有一个错误。会回帖 Symphony 模型文件中的错误不会产生 SegFaults。稍微不同的代码可以防止操作码缓存错误。 我不太确定是什么导致了我的问题,我在 Jobeet 教程中重新跟踪了我的步骤,现在看起来很好。还是谢谢 缓存,缓存。它总是缓存......该死的。谢谢。我必须把它纹在手上。在更改数据库之前始终清除缓存。刚刚使用 Symfony 3.2 在doctrine:schema:update
上遇到了段错误。清除 ./var/cache/dev 文件夹工作正常。【参考方案2】:
为了争论,我想分享一下我解决类似错误的方法。
我正在查看的夹具逻辑中存在问题,它会返回相同的代码:分段错误
基本上,相同的 var 在被声明并作为方法中的参数传递后,在循环中被覆盖,是的,我知道,多么有趣:)
因此,通过定义其他变量并正确地重新分配它们,错误完全消失了......
希望能帮助其他人像我一样访问此页面!
关于你的情况,如果其他答案没有解决它,你可能想通过在 endfor 关闭指令之后添加 ; 来尝试更正模板部分中的代码。
【讨论】:
【参考方案3】:当我在处理 symfony 项目时遇到这种情况时,我首先检查日志,但并非总是能找到解决方案。如果没有,我从我正在编写的项目中运行一些 symfony 命令,以查看控制台中是否显示了一些描述的错误。
我还会检查我最近所做的更改并尝试回滚部分代码。
上次发生在我身上是因为yml文件中的参数不正确,只是一个“父”类。
希望它有助于思考如何思考这个问题。
【讨论】:
以上是关于Symfony 学说数据加载分段错误的主要内容,如果未能解决你的问题,请参考以下文章