我在窗户上
我正在使用PHING压缩一些文件
我有很多东西被压缩
压缩工作,但在压缩文件中包含特定phing文件集的工作除外
当我调试时,我可以在phing的ZIP任务中看到ZipArchive :: close返回false.错误字符串显示"权限被拒绝".在手册中声明close()是实际写入文件的内容.
它不是时间耦合,换句话说,它发生在这个是第一个,最后一个或其他什么.所有其他的工作.这个似乎没什么不同.
这是我的构建文件:http://pastebin.org/84786(好一个月)
问题出在第251行.在它之前和之后的zip任务都可以正常工作.在调试器中,我可以看到大约150个文件被添加到zip中.我已经验证了调试器中所有正确的路径.
构建似乎在linux上运行良好.
当我右键单击zip文件所在的文件夹时,只读复选框为"蓝色",未选中或未选中.我保持选中或取消选中并按下确定并返回文件夹的属性,复选框再次为"蓝色".显然这是设计(http://support.microsoft.com/kb/326549),这似乎不是问题,因为它只发生在那个文件.
另一个奇怪的事情是,如果我转到第252行并将文件集更改为指向例如来自其上方"importer"模块的文件,则会创建zip.然而,第236行的.tar.gz相同的文件集证明每次都能正常工作.所以它只发生在zip任务的特定文件集中.该文件集适用于tar任务.实际上,在它下面的"package"注释下的所有任务也引用了那些文件,但tar.gz文件却没有.
是什么赋予了?
另外:新观察...在两台Windows机器上看起来如果我快速刷新文件视图我可以看到myzipfile.zip.tmp正在构建,但myzipfile.zip永远不会被创建.
在linux上我只是仔细检查了一切是否完美无缺.去搞清楚.
我有一个与phing有关的问题.我是否在本地开发机器上使用它来部署应用程序,还是通过生产机器上的ssh调用它?我不知道从哪里做Eran Galperin的步骤(你首选的PHP部署策略是什么).我是部署脚本的初学者.所以请原谅:)
马尔科
我有以下build.xml和build.properties文件:
build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="CoolProducts" basedir="../"
default="dev" description="CoolProducts front-end">
<!-- set default config -->
<property file="build/config/build.properties" />
<target name="dev">
<echo message="{$dir.css}" />
<echo message="{$dir.build}" />
<echo message="{$dir.source}" />
</target>
</project>
Run Code Online (Sandbox Code Playgroud)
build.properties
dir.source = .
dir.css = css
dir.build = build
Run Code Online (Sandbox Code Playgroud)
我希望我的输出是:
css
build
.
Run Code Online (Sandbox Code Playgroud)
但它是:
{$dir.css}
{$dir.build}
{$dir.source}
Run Code Online (Sandbox Code Playgroud)
我配置不正确吗?
我正在尝试使用Phing进行自动化:
我认为在我的项目中添加一个构建文件夹并将所有构建配置文件和db deltas放在该文件夹中是有意义的.并将所有这些提交到SVN存储库中.所以每个开发人员在从svn签出时都会获得更新的构建文件.并能够运行构建以使用新更改更新其数据库.
在生产服务器上:我打算在那里添加另一个构建文件,以获取svn中的最新Tagged版本并执行CSS和JS压缩.
我计划使用PHPUnderControl实现持续集成,因此我可以跟踪每个构建的结果,并在构建失败时收到通知.
所以,你认为这一切都有意义,或者你还有其他更好的建议吗?
Phing用户指南使用**文件过滤器的以下描述:
"两个星号(**)可能包含在目录分隔符的"边界"之上."
我很难解读这真正意味着什么.有人可以把它翻译成英文吗?
我无法理解有关给定<if>标签的多个条件的Phing文档.它意味着除非使用<and>标记,否则不能有多个条件,但没有如何使用它的示例.因此,我嵌套了两个<if>标签,但是当我知道有更好的方法时,我觉得这样做很傻.有谁知道如何使用<and>标签来完成以下任务:
<if><equals arg1="${deployment.host.type}" arg2="unrestricted" /><then>
<if><equals arg1="${db.adapter}" arg2="PDO_MYSQL"/><then>
<!-- Code Here -->
</then></if>
</then></if>
Run Code Online (Sandbox Code Playgroud)
我发现没有人对此有过任何经验,这让我感到非常惊讶.Phing是用PHP代替Java的'ANT'构建工具的实现.对于缺乏简单而强大的部署工具的PHP开发人员来说,它非常有用.Java能够将自包含的Web项目打包到单个文件中,或者将多个Web项目文件打包成更大的文件,这是一项了不起的功能.ANT或Phing并没有让PHP达到这一点,但它在正确的方向上迈出了明确的一步,并且比GNU Make曾经或将要更容易理解和使用.
有人知道在Phing构建中使用SFTP将文件上传到远程服务器的简单方法吗?我似乎无法找到自定义或本地Phing任务来执行此操作.另一个问题是SFTP unix命令的交互性(到达主机后需要密码等)
有任何想法吗?
我有一个Phing项目,你传递参数.我想对这个参数执行简单的字符串操作,例如strtolower()或ucwords()等.任何想法我怎么能这样做?
这是我希望执行的命令.
php -r "apc_clear_cache(); apc_clear_cache('user'); apc_clear_cache('opcode');"
Run Code Online (Sandbox Code Playgroud)
这是我对phing的尝试
<exec command='php -r "apc_clear_cache(); apc_clear_cache(\'user\'); apc_clear_cache(\'opcode\');"' outputProperty="result" />
Run Code Online (Sandbox Code Playgroud)
这就是我得到的
BUILD FAILED
Error reading project file [wrapped: /var/virtual/abc.com/build.xml:171:26: > required]
Total time: 0.2093 seconds
Run Code Online (Sandbox Code Playgroud)
请指教.
更新:
我写称为bash脚本解决我的问题RunApcClearCache.sh,运行
php -r "apc_clear_cache(); apc_clear_cache('user'); apc_clear_cache('opcode');"
Run Code Online (Sandbox Code Playgroud)
然后使用调用bash脚本 ./RunApcClearCache.sh
如果有更好的方法,我想听听.
我也不愿意为一件如此简单的事情写一个任务.当然必须有一种方法可以在exectask中正确地避开双引号.
我有以下构建文件:
<?xml version="1.0" encoding="UTF-8"?>
<project name="Example" default="test" description="Sample Description">
<target name="test">
<exec command="ls" dir="./" />
</target>
</project>
Run Code Online (Sandbox Code Playgroud)
但是,Phing 似乎在不输出任何内容的情况下运行此命令:
Buildfile: /path/to/build/file/build.xml
Example > test:
BUILD FINISHED
Total time: 0.2106 seconds
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
注意phpunit测试
phing ×10
php ×6
deployment ×3
ant ×2
build ×1
execute ×1
filter ×1
properties ×1
sftp ×1
ssh ×1
ziparchive ×1