来自Windows的PHP文件在Ubuntu中不起作用

时间:2011-10-06 11:42:50

标签: php ubuntu

我已经将在windows中开发的PHP文件复制到ubuntu,但是当我想在ubuntu上浏览这些文件时,它们不会执行任何操作。为什么?

修改

没有错误消息,我在浏览器中打开它们,但似乎他们没有任何代码。例如,如果文件的代码为<?php echo "hello"; ?>,则此文件不会执行任何操作。

如果我创建一个新文件,它可以正常工作,但是当我复制一个类似的文件时,它什么也没做。

4 个答案:

答案 0 :(得分:1)

此外,您可能需要将行结尾从Windows格式转换为Unix格式。

您可以在Notepad ++中执行此操作。

Edit>EOLConversion>Unix Format

答案 1 :(得分:0)

这可能是因为您没有必要的基础设施来在本地运行PHP文件,例如在WAMP:http://www.wampserver.com/phorum/read.php?2,44101,44101的情况下,您可能需要安装LAMP或类似的。很难确定更多的细节..

答案 2 :(得分:0)

为了让php文件在Unix / Linux下自动运行,它需要两件事:

  1. 文件必须是可执行的
  2. 文件必须有一个有效的'hashbang'行作为文件的第一行。
  3. 从Windows传输到Linux的文件可能没有正确的权限,而且几乎肯定没有正确的hashbang行。使用'ls -l'和chmod查看和更改权限(我将此作为练习留给读者)。

    php的hashbang行在我的Ubuntu框中看起来像这样:

    #!/usr/bin/php
    

    所以你的例子实际上是这样的:

    #!/usr/bin/php
    <?php echo "hello"; ?>
    

    可以使用

    找到实际路径
    command -v php
    

    在将文件从Windows传输到unix时,你必须考虑到hashbang行的一个微妙问题,实际上它是提到的天际线:Windows使用'\ r \ n'换行组合,unix仅使用'\ n'。这意味着在Windows框中编辑的文件中的hashbang行实际上看起来像这样:

    #!/usr/bin/php\r
    

    你不会看到'\ r'字符(毕竟它是一个回车符),但操作系统会尝试执行'php \ r'而不是'php'...所以是的,你确实有使用dos2unix或frdos从文件中删除回车。

答案 3 :(得分:0)

使用ls -la检查文件权限。它们应该是Apache用户可读的(在标准情况下为www-data)。

尝试运行chmod -R 755 /path/to/website,看看它是否有效。