PHP脚本仅在从脚本的目录运行命令时从命令行执行

时间:2017-07-04 04:45:56

标签: php shell unix command-line cron

我正在尝试从命令行运行此脚本:

#!/usr/local/bin/php
<?php
$myfile = fopen("cc.log", "a") or die("Unable to open file!");
$txt = "Success \n";
fwrite($myfile, $txt);
fclose($myfile); 
?>

它有效,但只有当我进入脚本目录并运行时才会运行:

/usr/local/bin/php test_script.php

这也有效:

/usr/local/bin/php /home/<username>/public_html/test_script.php

但不是在我离开目录时。

2 个答案:

答案 0 :(得分:1)

通过更改test_script.php的第3行来解决:

$myfile = fopen("cc.log", "a") or die("Unable to open file!");

到绝对路径:

$myfile = fopen("/home/<username>/public_html/cc.log", "a") or die("Unable to open file!");

原始脚本在调用命令的目录中创建了一个cc.log文件,并附加了大约50&#34;成功&#34;消息xD

答案 1 :(得分:0)

原始问题的更多正式答案:

您的文件(test_script.php)需要可执行才能从任何地方运行。这可以通过chmod完成:

chmod 755 test_script.php

并导致文件可以通过调用来运行。

./test_script.php

现在,请滚动,你应该能够像这样调用它来运行文件:

./path/to/test_script.php

路径前面的那个点应该允许你将脚本作为可执行文件运行而不做任何其他事情。

希望它有所帮助/有效!

(如果它没有工作评论,我会启动我的Linux机器并尝试复制它!)

修改

好吧,奇怪的是它不起作用!射击!您的Linux服务器上是否安装了PHP CLI(命令行界面)?如果是这样,我会鼓励你尝试:

php /path/to/your/test_script.php

希望第二条建议有所帮助!

编辑2

啊哈时刻2号!!

我相信你的php应该安装在这里:/usr/bin/php,将它放在本地文件夹中将不允许你从另一个目录中正确地调用它!

要自行下载php的新安装,请运行

sudo apt-get install php5 libapache2-mod-php5

您还必须将脚本标题更改为#!/usr/bin/php

这是第三次编辑的good source!我真的希望它有所帮助!