1

我有一个相当有趣的问题。我使用 FileZilla 和 Notepad++ 来编辑我的 PHP 脚本。一个名为 的脚本functions.php被编辑和更改了很多。不幸的是,每次我编辑并重新上传它时,我都会检查我的错误日志,发现每次重新上传时都会在我的网站上抛出大约 5 个错误。只需要几秒钟,但由于脚本包含在我网站上的几乎每个页面中,所以几秒钟就足以引发错误。

我在想,也许,我可以有一个functions2.php基本相同的。functions2.php如果不可用,是否有办法让我网站上的脚本functions.php获取?谢谢。

编辑:我得到的错误通常类似于“解析错误:语法错误,意外 $end ...”,我认为这意味着脚本只是部分上传。这可能使 file_exists 不是最好的解决方案,因为文件在那里,但它只是“一半”在那里。

上传和重命名似乎是一个很好的解决方案,但每次上传都有点乏味:) 我重新上传并测试了很多。

有没有办法检查 php 文件中的 PHP 语法错误?在这种情况下,这将非常方便......

4

2 回答 2

1

不使用 FTP,而是考虑一个 PHP / Perl / Ruby 脚本,它将获取正在上传的文件的 POST,以及要替换的文件的文件名和 MD5 / SHA(以确保您在帖子中拥有所有内容)。您还需要添加一些安全性,例如在 Apache 登录之后。

一旦发布的文件被 PHP / Perl / Ruby 脚本接受,md5 检查(并且安全性也通过了),服务器将用“新”版本覆盖“旧”版本。这应该比 FTP 快很多并减少错误。

唯一可能的问题是需要将服务器上的文件权限设置为允许来自 Web 服务器的写访问。

只是一个想法。

另一个想法...

  • 上传到暂存目录
  • 使用 ssh 登录并执行mv /staging/<file> ./

也许你也可以让一个 cron 作业每小时执行一次。

于 2012-12-09T02:32:19.110 回答
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 并且不再存在)。但希望这不会经常发生,也许。至少,如果发生这种情况,它将完全失败,并且他们可以重新加载页面。也许它不会发生。

于 2012-12-09T02:25:36.973 回答