Выполнить 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?

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

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

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

В b.php поставили:

 <?php print "two"; ?> 

Печать:

 eric@dev ~ $ php a.php onetwothree 

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

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

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

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

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

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

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

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

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

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

 exec('php name.php'); 

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

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

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

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

exec('wget http://<url to the php script>') работал для меня.

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