我有一个相当有趣的问题。我使用FileZilla和Notepad ++来编辑我的PHP脚本。一个名为functions.php
的脚本经过编辑和更改。不幸的是,每当我编辑它并重新上载它时,我会检查我的错误日志,并发现每次重新上载时我的网站上都会抛出大约5个错误。它只需要几秒钟,但由于脚本包含在我网站的每个页面上,因此几秒钟就足以引发错误。
我在想,或许,我可以有一个基本相同的functions2.php
。如果functions2.php
不可用,我的网站上的脚本是否可以抓取functions.php
?感谢。
编辑:我得到的错误通常类似于“解析错误:语法错误,意外的$ end ...”,我相信这意味着脚本只是部分上传。这可能会使file_exists不是最好的解决方案,因为文件是THERE但它只是“中途”。
上传和重命名似乎是一个很好的解决方案,但每次上传都有点乏味:)我重新上传并测试了很多。
有没有办法检查PHP文件的PHP语法错误?在这种情况下,这将非常方便......
答案 0 :(得分:1)
不要使用FTP,而是考虑一个PHP / Perl / Ruby脚本,该脚本将对要上载的文件进行POST,以及文件名和要替换的文件的MD5 / SHA(以确保您拥有所有内容)在文中)。您还需要添加一些安全性,例如Apache登录后面。
一旦PHP / Perl / Ruby脚本接受了发布的文件,md5被检查(并且安全性也被传递),服务器将覆盖" old"使用" new"版。这应该比FTP快很多,并减少错误。
唯一可能的问题是需要将服务器上的文件权限设置为允许来自Web服务器的写访问权。
只是一个想法。
另一个想法......
mv /staging/<file> ./
你可以让一个cron工作每小时执行一次,也许。
答案 1 :(得分:0)
您可以执行以下操作:
1)如果function.php不存在,请使用抓取function2.php的代码
见
http://php.net/manual/en/function.file-exists.php
和
http://php.net/manual/en/function.require.php
<?php
if(file_exists('function.php')){
require_once 'function.php';
}else{
require_once 'function2.php';
}
?>
2)更新文件时,删除function.php,然后将新文件上传到newfile.php,然后将newfile.php重命名为function.php
这样您就不会尝试获取半个上传文件,并且重命名非常快。
你可能会在file_exists和require_once之间出现错误(如果它存在则会被删除然后它会到达require_once并且它不再存在)。但希望这种情况不会经常发生。至少,如果发生这种情况,它将完全失败,并且他们可以重新加载页面。也许它不会发生。