【问题标题】:php executable file not runningphp可执行文件未运行
【发布时间】:2015-12-19 04:58:36
【问题描述】:

我查看了 composer 是如何设置为通过调用 composer 而不手动发出 php 来运行 php 脚本的,我自己尝试这样做,但它不起作用。我知道这可能以前被问过,但我无法提出一个问题来找到它。

我有我的文件

#!/usr/bin/php
<?php

echo 'teststring' . PHP_EOL;

当我在文件所在的目录中发出test 时,我什么也得不到,但如果我这样做php test,那么我会得到“teststring”的回显。问题是 - 我如何设置它以便我可以直接执行文件?

我已授予 x 文件的权限。

这是一个示例输出:

x@y:~/www/html/dev/Project$ ls
...
-rwxrwxr-x 1 www-data www-data    53 сеп 22 12:34 test
...
x@y:~/www/html/dev/Project$ test
x@y:~/www/html/dev/Project$ php test
teststring
x@y:~/www/html/dev/Project$ which php
/usr/bin/php
x@y:~/www/html/dev/Project$

【问题讨论】:

  • 你的 shebang 线在我看来不太好。它应该类似于#!/usr/bin/env/php#!/usr/bin/php,具体取决于您的可执行文件所在的位置。
  • @Havelock 尝试了您的两个建议,结果仍然相同。正如我所说,我只是从作曲家那里复制的。
  • 然后你需要找到你的可执行php在哪里。您可以尝试使用 find / -name phplocate php 甚至可能是 whereis php...
  • 您应该尝试使用 which 而不是 whereis 来定位 php 可执行文件,如 so$ which php
  • 我的安装非常标准,php 位于 /usr/bin/php,但即使我将第 1 行更改为 #!/usr/bin/php,我仍然得到相同的结果,请参阅我稍后将进行的编辑。

标签: php linux terminal


【解决方案1】:

你应该尝试使用which而不是whereis来定位php可执行文件

$ which php

...这个命令只搜索可执行文件,而whereis 尝试猜测有用的链接,你可以阅读更多 [这里] (https://superuser.com/questions/40301/which-whereis-differences)

然后像这样运行它

$ ./teststring

您可以在此处阅读有关执行 shell 脚本的更多信息

thegeekstuff

tldp.org

【讨论】:

  • 好吧,composer 不是这样,如果你在本地安装它,你可以调用composer,这就是我感兴趣的。另外,如果我用./ 表示法调用它,我会得到@ 987654334@。如果我将第一行更改为 #!/usr/bin/env php 我得到 : No such file or directory
  • 我的错,让我看看你说的composer,我显然对此一无所知:)
  • 不只是composer,几乎任何库都提供了这样的功能,你也可以看到phpunit,例如,它是一样的。还有laravel的artisan也有同样的#!/usr/bin/env php,可以看here
  • 嗯,shell 应该可以很好地解释 php 可执行文件,而 /usr/bin/php^M 看起来很奇怪,你应该丢弃尾随的 ^M、what-does-m-character-mean-in-vimremove-m-characters-at-end-of-lines-in-vi
猜你喜欢
  • 1970-01-01
  • 2011-12-08
  • 1970-01-01
  • 1970-01-01
  • 2012-07-10
  • 2018-05-02
  • 1970-01-01
  • 2020-10-29
  • 1970-01-01
相关资源
最近更新 更多