从另一个php执行php文件

时间:2010-05-15 17:41:17

标签: php

我想调用一个像

一样启动的PHP文件
<?php
function connection () {
   //Statements
}

我从PHP这样打电话:

<?php
exec ('/opt/lampp/htdocs/stuff/name.php');
?>

我明白了:

line1-> cannot open ?: No such file
line 3 //Connection: not found
line 4 Syntax errror: "("

为什么这不能正确执行name.php文件?

5 个答案:

答案 0 :(得分:55)

它试图将其作为shell脚本运行,它将您的<?php令牌解释为bash,这是一个语法错误。只需使用include()或其中一位朋友:

例如,在a.php put:

<?php
print "one";
include 'b.php';
print "three";
?>

b.php put:

<?php
print "two";
?>

打印:

eric@dev ~ $ php a.php
onetwothree

答案 1 :(得分:11)

exec正在对操作系统进行shell操作,除非操作系统有一些了解如何执行文件的特殊方法,否则它将默认将其视为shell脚本或类似文件。 在这种情况下,它不知道如何运行您的PHP文件。 如果绝对必须从shell执行此脚本,则执行php将文件名作为参数传递,例如

exec ('/usr/local/bin/php -f /opt/lampp/htdocs/.../name.php)') ;

或使用php脚本顶部的punct

#!/usr/local/bin/php
<?php ... ?>

答案 2 :(得分:9)

听起来你正试图直接在shell中执行PHP代码。你的shell不会说PHP,所以它解释你的PHP代码,好像它是用shell的本地语言编写的,好像你在命令行中运行<?php一样。

Shell脚本通常以“shebang”行开头,该行告诉shell用于解释文件的程序。像这样开始你的文件:

#!/usr/bin/env php
<?php
//Connection
function connection () {

除此之外,你传递给exec的字符串没有任何意义。它首先是一个斜杠,它在路径中使用了太多的句点,并且它有一个假的右括号。

复制命令字符串的内容并将其粘贴到命令行。如果它没有在那里运行,那么exec可能也无法运行它。

另一个选项是更改您执行的命令。不是直接运行脚本,而是运行php并将脚本作为参数传递。然后你不应该需要shebang线。

exec('php name.php');

答案 3 :(得分:2)

在linux平台上开展项目时遇到了这个问题。

exec('wget http://<url to the php script>)

这就像从浏览器运行脚本一样。

希望这会有所帮助!!

答案 4 :(得分:-6)

exec('wget http://<url to the php script>')为我工作。

它使我能够集成两个设计为网页的php文件,并将它们作为代码运行,而不会影响调用页面