Выполните 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 файл?

40
задан Eric Leschinski 7 August 2014 в 22:17
поделиться

3 ответа

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

Например, в a.php поместите:

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

В b.php поместите:

<?php
print "two";
?>

Печать:

eric@dev ~ $ php a.php
onetwothree
59
ответ дан 27 November 2019 в 01:34
поделиться

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

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

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

#!/usr/local/bin/php
<?php ... ?>
12
ответ дан 27 November 2019 в 01:34
поделиться

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

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

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

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

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

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

exec('php name.php');
9
ответ дан 27 November 2019 в 01:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: