似乎在我的服务器上popen()
根本不起作用。我通过浏览器访问test.php
,文件postt1.php
和postt2.php
无法执行。未写入article1.txt
和article2.txt
个文件。所有文件都在同一目录中。
可能是什么问题?
在文件test.php
中,我有:
<?php
$pipe1 = popen('postt1.php', 'w');
$pipe2 = popen('postt2.php', 'w');
pclose($pipe1);
pclose($pipe2);
echo "end";
?>
内部文件postt1.php
我有:
<?php
$tosave = "Hello there";
$file = fopen("article1.txt","w");
fwrite($file,$tosave);
fclose($file);
echo $tosave;
echo "<br>done";
?>
并且在postt2.php
我有相同的东西,除了我写到文件article2.txt
。
答案 0 :(得分:0)
postt1.php
结束postt2.php
需要shebang tags(#!)并执行权限。
通过告诉文件在文件的第一行(在<?php
之前!)之前的文件,添加shebang标记。最佳实践要求您应通过env
命令访问解释器:
#!/usr/bin/env php
<?php
$tosave = "Hello there";
$file = fopen("article1.txt","w");
fwrite($file,$tosave);
fclose($file);
echo $tosave;
echo "<br>done";
?>
您还可以使用直接指向php
:#!/usr/bin/php
的shebang。但这在整个系统中不太便携。
您还必须确保两个文件都具有可执行文件:
$ chmod +x posttl.php