Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php windows don';我不能在Ubuntu中工作_Php_Ubuntu - Fatal编程技术网

Php windows don';我不能在Ubuntu中工作

Php windows don';我不能在Ubuntu中工作,php,ubuntu,Php,Ubuntu,我已经将windows中开发的PHP文件复制到ubuntu中,但当我想在ubuntu上浏览这些文件时,它们不会执行任何操作。为什么? 编辑 没有错误消息,我在浏览器中打开了它们,但是如果它们没有任何代码的话。例如,如果一个文件的代码是,那么这个文件什么都不做 如果我创建一个新文件,它可以正常工作,但是当我复制一个类似的文件时,它什么也不做。这可能是因为您没有必要的基础设施在本地运行PHP文件,例如,在WAMP:,您可能需要安装或类似的软件。很难确定是否有其他细节。这可能是因为您没有必要的基础设施

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

编辑 没有错误消息,我在浏览器中打开了它们,但是如果它们没有任何代码的话。例如,如果一个文件的代码是
,那么这个文件什么都不做


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

这可能是因为您没有必要的基础设施在本地运行PHP文件,例如,在WAMP:,您可能需要安装或类似的软件。很难确定是否有其他细节。

这可能是因为您没有必要的基础设施在本地运行PHP文件,例如,在WAMP:的情况下,您可能需要安装或类似的工具。要想在Unix/Linux下自动运行php文件,需要两件事:

  • 该文件必须是可执行的
  • 文件中的第一行必须包含有效的“hashbang”行
  • 从windows传输到Linux的文件可能没有正确的权限,而且几乎肯定没有正确的hashbang行。使用'ls-l'和chmod来查看和更改权限(我将把它作为练习留给读者)

    php的hashbang行在我的Ubuntu框中看起来如下:

    #!/usr/bin/php
    
    因此,您的示例实际上如下所示:

    #!/usr/bin/php
    <?php echo "hello"; ?>
    
    #!/usr/bin/php\r
    
    在将文件从windows传输到unix时,hashbang行有一个微妙的问题,您必须考虑到这一点,实际上skyline也提到了这一点:windows使用“\r\n”行馈送组合,unix只使用“\n”。这意味着在windows框中编辑的文件中的hashbang行实际上如下所示:

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

    您将看不到“\r”字符(毕竟是回车符),但操作系统将尝试执行“php\r”而不是“php”。。。因此,是的,您必须使用dos2unix或frdos从文件中删除回车符。

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

  • 该文件必须是可执行的
  • 文件中的第一行必须包含有效的“hashbang”行
  • 从windows传输到Linux的文件可能没有正确的权限,而且几乎肯定没有正确的hashbang行。使用'ls-l'和chmod来查看和更改权限(我将把它作为练习留给读者)

    php的hashbang行在我的Ubuntu框中看起来如下:

    #!/usr/bin/php
    
    因此,您的示例实际上如下所示:

    #!/usr/bin/php
    <?php echo "hello"; ?>
    
    #!/usr/bin/php\r
    
    在将文件从windows传输到unix时,hashbang行有一个微妙的问题,您必须考虑到这一点,实际上skyline也提到了这一点:windows使用“\r\n”行馈送组合,unix只使用“\n”。这意味着在windows框中编辑的文件中的hashbang行实际上如下所示:

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

    您将看不到“\r”字符(毕竟是回车符),但操作系统将尝试执行“php\r”而不是“php”。。。因此,是的,您确实必须使用dos2unix或frdos从文件中删除回车符。

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

    您可以在记事本++中执行此操作


    Edit>EOLConversion>Unix格式

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

    您可以在记事本++中执行此操作


    Edit>EOLConversion>Unix格式

    使用
    ls-la
    检查文件权限。Apache用户应该可以读取这些数据(在标准情况下为
    www-data


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

    使用
    ls-la
    检查文件权限。Apache用户应该可以读取这些数据(在标准情况下为
    www-data


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

    你说的“他们什么都不执行”是什么意思?发生了什么事?您是在控制台中还是在web服务器中执行它们?您收到了什么错误消息?您需要配置Web服务器以执行这些文件。您所说的“它们不执行任何操作”是什么意思?发生了什么事?您是在控制台中还是在web服务器中执行它们?您收到了什么错误消息?您需要配置Web服务器以执行这些文件。