【问题标题】:PHP error while uploading a script as plain text将脚本作为纯文本上传时出现 PHP 错误
【发布时间】:2011-02-19 17:21:50
【问题描述】:

我很难相信这个问题以前没有被问过,但我找不到任何相关的东西。

有时,在上传相当大的 PHP 脚本时,我会收到类似于以下内容的致命错误:

解析错误:语法错误,第 [line] 行的 [file] 中出现意外 $end

稍后快速刷新,上传完成后错误当然会消失。一个简单的解决方案是将我的 FTP 客户端的传输模式切换为 二进制,但这似乎有点奇怪,因为脚本是 ASCII。

我习惯于通过纯文本上传 ASP.NET 文件,服务器只是等到传输完成后再交付页面。

最佳做法是什么?

【问题讨论】:

    标签: php upload ftp


    【解决方案1】:

    您应该将脚本传输到服务器上的暂存目录,并在已在暂存中正确测试后使用 ftp move 命令将它们实时移动。

    【讨论】:

      【解决方案2】:

      如果您将脚本部署到实时环境,您可能希望考虑使用rsync

      它比 FTP 快得多,因为它首先比较目标和源,并且只移动源位置中较新的文件。它还应该消除您遇到的大型 PHP 脚本未完全上传的问题。

      作为替代方案,您可以使用 rsync 将文件从源目标位置移动到目标 Web 服务器上的测试目录。完成后,您可以在实时 Web 服务器上触发 rsync 以将文件从测试目录同步到实时。这里的好处是第二个 rsync 几乎是即时的,进一步减少了文件被覆盖的时间。

      当然,rsync 仅在 linux 服务器上可用,但 robocopy 可以在 windows 环境中用于类似的效果

      【讨论】:

      • 脚本完全上传,但如果它们相当大,中间请求将导致错误,因为文件尚未完成上传尚未。暂存区是最好的解决方案,我以后会使用这种方法。
      【解决方案3】:

      脚本正在中断,因为并非所有脚本都在服务器上,因此文件在脚本中间结束。您应该耐心等待它上传。如果您处于服务器处于活动状态并且用户将访问此页面的情况下(老实说,我想不出什么时候会发生这种情况),您可以更改权限,使其不可读Web 服务器在上传时,然后在加载后修复权限。

      【讨论】:

      • 当用户请求一个页面并且服务器没有读取它的权限时,这肯定会导致问题吗?
      • 你会得到 403 而不是 404,但回到我原来的观点,你为什么要链接到仍在上传的文件?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多