Подтвердить что ты не робот

Выполнить php файл с другого 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?

4b9b3361

Ответ 1

Он пытается запустить его как оболочку script, которая интерпретирует ваш токен <?php как bash, что является синтаксической ошибкой. Просто используйте include() или один из его друзей:

Например, в a.php put:

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

В b.php put:

<?php
print "two";
?>

Печать

[email protected] ~ $ php a.php
onetwothree

Ответ 2

exec обходит оболочку операционной системе, и если ОС не имеет особого способа узнать, как выполнить файл, то она по умолчанию будет обрабатывать ее как оболочку script или аналогичную. В этом случае он не знает, как запустить ваш php файл. Если этот script необходимо выполнить из оболочки, либо выполнить php, передав имя файла в качестве параметра, например

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

или используйте punct в верхней части вашего PHP скрипт

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

Ответ 3

Похоже, вы пытаетесь выполнить код PHP непосредственно в своей оболочке. Ваша оболочка не говорит на PHP, поэтому она интерпретирует ваш PHP-код, как если бы он был на вашем родном языке оболочки, как будто вы буквально запускали <?php в командной строке.

Сценарии оболочки обычно начинаются с строки "shebang", которая сообщает оболочке, какую программу использовать для интерпретации файла. Начните свой файл следующим образом:

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

Кроме того, строка, передаваемая в exec, не имеет никакого смысла. Он начинается с косой черты сам по себе, он использует слишком много периодов в пути, и у него есть правая правая скобка.

Скопируйте содержимое командной строки и вставьте их в свою командную строку. Если он не запускается там, то exec, вероятно, также не сможет запустить его.

Другой вариант - изменить команду, которую вы выполняете. Вместо прямого запуска script запустите php и передайте script в качестве аргумента. Тогда вам не понадобится строка shebang.

exec('php name.php');

Ответ 4

Это натолкнулось на работу над проектом на платформе linux.

exec('wget http://<url to the PHP скрипт>)

Выполняется так, как будто вы запускаете script из браузера.

Надеюсь, это поможет!

Ответ 5

exec('wget http://<url to the PHP скрипт>') работал у меня.

Это позволяет мне интегрировать два php файла, которые были разработаны как веб-страницы, и запускать их как код для работы, не затрагивая вызывающую страницу