目錄
回复内容:
首頁 後端開發 php教程 cmd - php文件在命令行可以顺利运行,在浏览器上无法正常运行

cmd - php文件在命令行可以顺利运行,在浏览器上无法正常运行

Jun 06, 2016 pm 08:29 PM
cmd php

首先感谢抽时间阅读!
我尝试通过浏览器登陆本地服务器运行我的PHP文件,无法正常运行。我安装的是Appserver安装包2.6.0版本(Appserver网站),包内包含的软件版本为:Apache 2.2.8PHP 6.0.0-dev。为了找出错误原因,我进行了如下步骤:
1、从命令行运行PHP文件,文件名为julia.php。运行成功。运行过程如下:
php文件代码为:

1

2

3

4

5

<code><?php exec(" julia 12.jl");

    echo "finished!";

?>

 

</code>

登入後複製
登入後複製

命令行运行:
cmd - php文件在命令行可以顺利运行,在浏览器上无法正常运行
同时,php文件中还有一行指令"exec('julia 12.jl')"也执行成功了。这行代码意思是运用julia语言(一种新的编程语言)的REPL环境运行12.jl这个julia文件,12.jl运行成功的话,会在桌面输出一个txt文件。在此处txt文件也成功出现在桌面上了。
但是,当我使用浏览器,从服务器访问julia.php的时候,结果如下:
cmd - php文件在命令行可以顺利运行,在浏览器上无法正常运行
虽然最后一行代码echo "finished!"顺利执行了,但是"exec('julia 12.jl')"并没有执行成功,因为桌面上没有生成txt文件。
2、我百度谷歌了很久看到一个貌似是查看错误的方法,我也不是很清楚是怎么回事,抱着试试看的态度操作了一下:
php文件代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<code><?php function my_exec($cmd, $input='')

         {$proc=proc_open($cmd, array(0=>array('pipe', 'r'), 1=&gt;array('pipe', 'w'), 2=&gt;array('pipe', 'w')), $pipes);

          fwrite($pipes[0], $input);fclose($pipes[0]);

          $stdout=stream_get_contents($pipes[1]);fclose($pipes[1]);

          $stderr=stream_get_contents($pipes[2]);fclose($pipes[2]);

          $rtn=proc_close($proc);

          return array('stdout'=&gt;$stdout,

                       'stderr'=&gt;$stderr,

                       'return'=&gt;$rtn

                      );

         }

$str = " julia 12.jl"//此处为我要检测是否执行成功的指令" julia 12.jl"

var_export(my_exec($str));

    echo "finished!";

?&gt;

 

</code>

登入後複製
登入後複製

命令行运行该php文件结果:
cmd - php文件在命令行可以顺利运行,在浏览器上无法正常运行
浏览器访问结果:
cmd - php文件在命令行可以顺利运行,在浏览器上无法正常运行
百度谷歌了其中的

"ERROR:key not found: "HOMEDRIVE"

并没有找到满意的答案。
请问我这是遇到什么问题了?有什么办法能让我顺利执行该文件中的exec(" julia 12.jl")指令么?
另外,我把其中的调用julia软件运行脚本的命令换成调用MATLAB软件的命令后,无论是在命令行还是在浏览器访问的情况下,均成功运行了MATLAB的m文件。我的php.ini文件也关闭了安全模式。
万分期待你的解答,谢谢!

回复内容:

首先感谢抽时间阅读!
我尝试通过浏览器登陆本地服务器运行我的PHP文件,无法正常运行。我安装的是Appserver安装包2.6.0版本(Appserver网站),包内包含的软件版本为:Apache 2.2.8PHP 6.0.0-dev。为了找出错误原因,我进行了如下步骤:
1、从命令行运行PHP文件,文件名为julia.php。运行成功。运行过程如下:
php文件代码为:

1

2

3

4

5

<code><?php exec(" julia 12.jl");

    echo "finished!";

?>

 

</code>

登入後複製
登入後複製

命令行运行:
cmd - php文件在命令行可以顺利运行,在浏览器上无法正常运行
同时,php文件中还有一行指令"exec('julia 12.jl')"也执行成功了。这行代码意思是运用julia语言(一种新的编程语言)的REPL环境运行12.jl这个julia文件,12.jl运行成功的话,会在桌面输出一个txt文件。在此处txt文件也成功出现在桌面上了。
但是,当我使用浏览器,从服务器访问julia.php的时候,结果如下:
cmd - php文件在命令行可以顺利运行,在浏览器上无法正常运行
虽然最后一行代码echo "finished!"顺利执行了,但是"exec('julia 12.jl')"并没有执行成功,因为桌面上没有生成txt文件。
2、我百度谷歌了很久看到一个貌似是查看错误的方法,我也不是很清楚是怎么回事,抱着试试看的态度操作了一下:
php文件代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<code><?php function my_exec($cmd, $input='')

         {$proc=proc_open($cmd, array(0=>array('pipe', 'r'), 1=&gt;array('pipe', 'w'), 2=&gt;array('pipe', 'w')), $pipes);

          fwrite($pipes[0], $input);fclose($pipes[0]);

          $stdout=stream_get_contents($pipes[1]);fclose($pipes[1]);

          $stderr=stream_get_contents($pipes[2]);fclose($pipes[2]);

          $rtn=proc_close($proc);

          return array('stdout'=&gt;$stdout,

                       'stderr'=&gt;$stderr,

                       'return'=&gt;$rtn

                      );

         }

$str = " julia 12.jl"//此处为我要检测是否执行成功的指令" julia 12.jl"

var_export(my_exec($str));

    echo "finished!";

?&gt;

 

</code>

登入後複製
登入後複製

命令行运行该php文件结果:
cmd - php文件在命令行可以顺利运行,在浏览器上无法正常运行
浏览器访问结果:
cmd - php文件在命令行可以顺利运行,在浏览器上无法正常运行
百度谷歌了其中的

"ERROR:key not found: "HOMEDRIVE"

并没有找到满意的答案。
请问我这是遇到什么问题了?有什么办法能让我顺利执行该文件中的exec(" julia 12.jl")指令么?
另外,我把其中的调用julia软件运行脚本的命令换成调用MATLAB软件的命令后,无论是在命令行还是在浏览器访问的情况下,均成功运行了MATLAB的m文件。我的php.ini文件也关闭了安全模式。
万分期待你的解答,谢谢!

多次尝试后,问题得以解决
解决方法:增加了两个系统环境变量:HOMEDRIVEHOMEPATH
之前无法解决原因:
1、不清楚Key Not Found的含义,后来尝试才知道,指的是系统的环境变量,而非Apache或者PHP的环境变量,在此感谢xelz的点拨。
2、初次尝试增加HOMEDRIVE系统环境变量,测试后没反应,其实需要重启电脑,windows就这个蛋疼。
3、初次尝试增加HOMEDRIVE系统环境变量,重启电脑后,依然报错,一开始我没注意以为还是缺少HOMEDRIVE系统环境变量,其实这次的错误略有不同,显示的是缺少HOMEPATH系统环境变量。
4、意识到以上错误后,我再次添加HOMEPATH环境变量,重启电脑后,服务器成功运行了PHP文件,成功调用Julia软件运行了jl文件。
十分感谢大家之前的热心回答。

以下答案只是猜的,希望有帮助

julia需要HOMEDRIVE这个环境变量,命令行运行的时候是以你自己的身份运行的
但是运行apache服务器的用户没有设置这个环境变量,因此报错

不懂julia,如果你写文件用到了相对路径,可以尝试改成绝对路径
如果本来就是绝对路径,或者改成绝对路径也不行, 那么尝试在系统环境变量里设置一个HOMEDRIVE

Apache 过滤掉了一些环境变量大概?用 SetEnv 还是什么指令在配置文件里设置一下试试。

浏览器上本来就不能运行php

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南

CakePHP 日期和時間 CakePHP 日期和時間 Sep 10, 2024 pm 05:27 PM

CakePHP 日期和時間

CakePHP 專案配置 CakePHP 專案配置 Sep 10, 2024 pm 05:25 PM

CakePHP 專案配置

CakePHP 檔案上傳 CakePHP 檔案上傳 Sep 10, 2024 pm 05:27 PM

CakePHP 檔案上傳

CakePHP 路由 CakePHP 路由 Sep 10, 2024 pm 05:25 PM

CakePHP 路由

討論 CakePHP 討論 CakePHP Sep 10, 2024 pm 05:28 PM

討論 CakePHP

CakePHP 快速指南 CakePHP 快速指南 Sep 10, 2024 pm 05:27 PM

CakePHP 快速指南

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發

See all articles