【问题标题】:Unable to execute PHP files from the command line无法从命令行执行 PHP 文件
【发布时间】:2017-08-02 16:15:28
【问题描述】:

在我遇到 Jenkins 的问题后,部署挂起,需要在命令行上执行 PHP(pdependphpmdphpcpd 等),并注意到,我也无法在命令行上重新安装 Composer 或运行 PHPLoc 之类的工具,我创建了一个 PHP 文件

<?php
print_r(get_defined_constants());

并尝试在命令行上执行它:

php phptest.php

但它没有用。当我这样做时,什么都不会发生。没有错误。什么都没有:

环境是 PHP 7.0.3 和 Ubuntu 14.04.3(在 VirtualBox VM 中)。顺便提一句。在命令行上执行的php -vphp -i 仍然有效。

什么可能导致此问题以及如何解决?

编辑

权限似乎是正确的:

root@ubuntuvm:~/Desktop# ls -lia | grep "phptest.php"
132234 -rw-r--r--  1 root root   40 Aug  2 17:29 phptest.php

777 也不起作用:

root@ubuntuvm:~/Desktop# chmod 777 ./phptest.php 
root@ubuntuvm:~/Desktop# php phptest.php
^C

报错设置:

/etc/php/7.0/cli

error_reporting = E_ALL
display_errors = On
log_errors = On
error_log = /var/log/php_errors.log

【问题讨论】:

  • 根本没有输出吗?脚本是挂起还是完成执行但没有输出?
  • 脚本挂起,没有完成执行。没有输出,只有一个换行符(由操作系统生成——所以 PHP 脚本绝对没有输出)。看截图,我刚刚添加到问题中。
  • 这很奇怪。您的 php 文件的权限是否正确?它是否只锁定了 www-data 用户?权限也正确吗?通常为 644 (rw-rw-r--)
  • 一切都恢复正常了!我真的没有在系统上改变任何东西!刚刚重启了虚拟机。我不知道,为什么它现在可以工作......我只是安装了另一个虚拟机,而旧的虚拟机获得了另一个 IP。但仅此而已 - 它不会影响 PHP 的行为!..
  • @ThinkingMedia 完全正确——微软的错误和 Linux VM 上的 Windows 问题... :)

标签: php command-line ubuntu-14.04 command-line-interface php-7


【解决方案1】:

这刚刚开始发生在我身上,我终于弄明白了。我不知道这是否是您的问题,或者您是否可以复制它,但希望这可以帮助其他人。

我在 PHPStorm 中打开了两个项目,在其中一个项目中我打开了“侦听 PHP 调试连接”,并且由于某些配置选项,只要我在系统上的任何位置运行任何 php 脚本,一个 PHPStorm窗口会抓取进程并停止它以进行调试。

通常,这会导致 PHPStorm 跳转到最顶部的窗口,给我一个可以控制的视觉提示,但由于我正在运行的脚本类型,我在启动它后立即切换窗口。所以我的手动窗口切换让我没有注意到 PHPStorm 的自动切换。

在使 PHPStorm 停止监听连接后,我能够再次运行脚本。

【讨论】:

  • 有用的答案和愚蠢的情况,到处都可以,但它不起作用
猜你喜欢
  • 2019-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-27
  • 2019-08-04
  • 1970-01-01
  • 2016-10-18
相关资源
最近更新 更多