【发布时间】:2018-11-02 04:27:03
【问题描述】:
如果我通过浏览器运行这个简单的代码,它会正常工作并在与脚本相同的位置创建“text.txt”。
<?php
$op = fopen('text.txt', 'w');
fwrite($op, 'test');
fclose($op)
?>
但是如果我用命令行运行
php script.php
它在一个完全不同的目录中创建文件。
为什么同一个脚本在运行浏览器和命令行时会有不同的表现?!
要解决这个问题,我需要输入完整路径:fopen('/home/user/site.com/subfolder/text.txt', 'w');
我有一个包含许多行和许多文件路径的脚本,要全部更改会很费力。如何在不将完整路径放入文件中的情况下解决此问题。
【问题讨论】:
-
你从哪里运行命令?该文件是在您运行命令的目录中创建的吗?
-
当您通过浏览器运行代码时,它会在 Web 服务器
apache or others上运行,当您从 shell 运行代码时,它会由php interpreter运行,请阅读:php.net/manual/en/function.fopen.php -
我直接从shell运行
-
@SalimIbrogimov 是否可以进行一些全局配置。让他们以同样的方式工作?
-
它应该在您用来运行命令的同一目录中工作。检查你的环境。在脚本中尝试 getcwd()
标签: php shell command-line command-line-interface