小编Aba*_*unt的帖子

从PHP运行Python脚本

我正在尝试使用以下命令从PHP运行Python脚本:

exec('/usr/bin/python2.7 /srv/http/assets/py/switch.py arg1 arg2');

但是,PHP根本不会产生任何输出.错误报告设置为E_ALL并且display_errors已启用.

这是我尝试过的:

  • 我用过python2,/usr/bin/python2python2.7不是/usr/bin/python2.7
  • 我还使用了相对路径而不是绝对路径,它也没有改变任何东西.
  • 我试着使用的命令exec,shell_exec,system.

但是,如果我跑

if (exec('echo TEST') == 'TEST')
{
    echo 'exec works!';
}
Run Code Online (Sandbox Code Playgroud)

它完美无缺,shutdown now而且什么都不做.

PHP具有访问和执行文件的权限.

编辑:感谢亚历杭德罗,我能够解决问题.如果您遇到同样的问题,请不要忘记您的网络服务器可能/希望不会以root用户身份运行.尝试以您的网络服务器用户或具有类似权限的用户身份登录,并尝试自行运行命令.

php python linux exec archlinux

103
推荐指数
7
解决办法
28万
查看次数

当前PHP脚本相对于文档根目录的路径

TL; DR:当尝试在PHP include命令包含的页面上使用相对链接时,此页面上的最后一个代码示例有哪些替代方案?


我正在尝试include()链接到.css文档的文件,问题是我需要从多个(不同的)目录中包含此文件.我的目录结构看起来有点像这样:

www
??? (getpath.php)
?
??? css
?   ??? style.css
??? php
?   ??? header.php
??? content
    ??? index.php
    ??? posts
        ??? index.php
Run Code Online (Sandbox Code Playgroud)

(我header.php在两个index.php文件中都包含.header.php是引用的文件style.css(浏览器需要找到的文件).例如:使用时../css/style.css,CSS会显示在我的content/index.php但不会显示在我的文件中content/posts/index.php,因为浏览器正在寻找content/css/index.php.)

放置在文档根目录的子目录中时,网站也应该工作,而不是在文档根目录中.出于这个原因,我不能只使用/css/style.css(相对于服务器根目录)链接到我的CSS样式表.

我想(请纠正我,如果我错了!)告诉浏览器在哪里找到CSS文档的最简单方法可能是指定相对于文档根目录的路径.由于我希望我的网站位于文档根目录的子目录中(并且希望避免使用config文件来存储子目录),我需要找出网站所在子目录的相对路径.我的想法是放置getpath.php在我的网站的根目录(不是文档根目录)中调用的文件.在该文件中,我写了以下内容:

<?php
  define('PROJECT_SUBDIRECTORY', $_SERVER['PHP_SELF']);
?>
Run Code Online (Sandbox Code Playgroud)

但是,我注意到这给了我用户在浏览器中请求的PHP文件的相对目录(例如content/index.php)而不是包含的文件(getpath.php).我也读过这PHP_SELF是基于REQUEST_URI,这是不安全的.我在这里找到了这个解决方案:

define('PROJECT_DIR', …
Run Code Online (Sandbox Code Playgroud)

php directory-structure relative-path document-root magic-constants

9
推荐指数
1
解决办法
8165
查看次数

Java:SimpleDateFormat每天和每小时增加1(时间跨度)

我试图以"days:hours:minutes:seconds"的格式输出"900,000毫秒",我现在正在使用此代码:

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd:HH:mm:ss");
String formatted = simpleDateFormat.format(900000)
Run Code Online (Sandbox Code Playgroud)

900,000毫秒应该是15分钟,所以我希望它返回

00:00:15:00
Run Code Online (Sandbox Code Playgroud)

或类似的东西......

但无论如何它都会回归

01:01:15:00
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我为什么以及如何解决它?

我认为它必须对时区做一些事情,但它也增加了1天的天数......?

提前致谢!

java format time timespan simpledateformat

5
推荐指数
3
解决办法
3456
查看次数