php的exec在linux中返回值不能为负数的问题_PHP教程
exec函数在windows环境下是没有任何问题的,但在linux中返回值不能为负数。
string exec ( string $command [, array &$output [, int &$return_var ]] )
第三个参数, 怎么不能接收负数??
这里的&$return_var就是程序返回值,起初我的回答是可以为负数。
一般在C语言里我们会这样写
代码如下 | 复制代码 |
#include |
这个-5就是返回值,但习惯上是写成0或者1的。
注意:很多人的C代码里把main函数写成 void main() 这样实际上是不对的,详细的就不说了。
把上面的代码编译后,到CMD下运行,然后就能看到输出结果了。接着,输入“echo %ERRORLEVEL%”,回车,就可以看到程序的返回值了。这个%ERRORLEVEL%就代表了程序的返回状态。在WIN下确实是可以为负数的。如图所示:
,php调用也是正常的。
代码如下 | 复制代码 |
E:devphp535>php -r "exec('return.exe',$out,$a);var_dump($a);" int(-2) |
但是到了linux下,始终为正数,刚开始怀疑是权限问题,用了chmod +x后,排除了权限问题。
代码如下 | 复制代码 |
exec("/home/wwwroot/test/rtest.out 2>&1",$out,$a); var_dump($out,$a); array(1) { [0]=> string(3) "^_^" } int(251) |
看起来成了256+return val,可以看到实际上返回了负数,只不过被转换成正数了。
接着看了下standard/exec.c里的源代码,没发现啥端倪,干到很奇怪,突然想到自己忘了一步。忘了看程序返回给OS的值了.
可以使用echo $? 显示最后命令的推出状况。
代码如下 | 复制代码 |
-bash-3.00$ vi main.c -bash-3.00$ gcc -o ./mm main.c -bash-3.00$ ll total 48 drwxr-xr-x 3 www www 4096 May 4 2011 2011 drwxr-xr-x 6 www www 4096 Jun 23 2011 eoc -rwxr-xr-x 1 www www 7131 Feb 1 12:47 hello -rw-r--r-- 1 www www 3 Feb 1 12:51 hello.c -rw-r--r-- 1 www www 99 Feb 1 12:50 main.c -rwxr-xr-x 1 www www 4714 Feb 1 12:51 mm drwxr-xr-x 3 www www 4096 Jun 24 2011 test -bash-3.00$ ./mm ^_^ -bash-3.00$ echo $? 251 -bash-3.00$ |
这样就可以看看exec返换给OS的值是多少。
在linux下,这个返回值就是无符号类型,返回的是一个正数,所以传给php也是正数了,php实际上也是调用的exec所返回的值。
exec目录操作
2down vote For greater control over how the child process will be executed, you can use the proc_open() function:
2 down vote
For greater control over how the child process will be executed, you can use the proc_open() function:
代码如下 | 复制代码 |
$cmd = 'Scripts/script.sh'; |

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Lima komponen asas sistem Linux adalah: 1. Kernel, 2. Perpustakaan Sistem, 3. Utiliti Sistem, 4. Antara Muka Pengguna Grafik, 5. Aplikasi. Kernel menguruskan sumber perkakasan, Perpustakaan Sistem menyediakan fungsi yang telah dikompilasi, utiliti sistem digunakan untuk pengurusan sistem, GUI menyediakan interaksi visual, dan aplikasi menggunakan komponen ini untuk melaksanakan fungsi.

IIS dan PHP serasi dan dilaksanakan melalui FastCGI. 1.IIS meneruskan permintaan fail .php ke modul FastCGI melalui fail konfigurasi. 2. Modul FastCGI memulakan proses PHP untuk memproses permintaan untuk meningkatkan prestasi dan kestabilan. 3. Dalam aplikasi sebenar, anda perlu memberi perhatian kepada butiran konfigurasi, debugging ralat dan pengoptimuman prestasi.

Docker adalah penting pada Linux kerana Linux adalah platform asalnya yang menyediakan alat yang kaya dan sokongan masyarakat. 1. Pasang Docker: Gunakan sudoapt-getupdate dan sudoapt-getinstalldocker-cedocker-ce-clicotainerd.io. 2. Buat dan Menguruskan Bekas: Gunakan arahan Dockerrun, seperti Dockerrun-D-Namemynginx-P80: 80nginx. 3. Tulis Dockerfile: Mengoptimumkan saiz imej dan gunakan pembinaan pelbagai peringkat. 4. Pengoptimuman dan penyahpepijatan: Gunakan dockerlog dan dockerex

Pelbagai panggilan ke session_start () akan menghasilkan mesej amaran dan kemungkinan penggantian data. 1) PHP akan mengeluarkan amaran, menyebabkan sesi telah dimulakan. 2) Ia boleh menyebabkan penggantian data sesi yang tidak dijangka. 3) Gunakan session_status () untuk memeriksa status sesi untuk mengelakkan panggilan berulang.

CentOS adalah pilihan pertama untuk persekitaran pelayan dan perusahaan untuk keselamatan, kestabilan dan prestasi yang unggul. 1) Keselamatan menyediakan kawalan akses terpaksa melalui Selinux untuk meningkatkan keselamatan sistem. 2) Kestabilan disokong oleh versi LTS sehingga 10 tahun untuk memastikan kestabilan sistem. 3) Prestasi dengan ketara meningkatkan kelajuan tindak balas sistem dan penggunaan sumber dengan mengoptimumkan konfigurasi kernel dan sistem.

Komponen teras Linux termasuk kernel, sistem fail, shell, pengguna dan ruang kernel, pemandu peranti, dan pengoptimuman prestasi dan amalan terbaik. 1) Kernel adalah teras sistem, menguruskan perkakasan, memori dan proses. 2) Sistem fail menganjurkan data dan menyokong pelbagai jenis seperti Ext4, BTRFS dan XFS. 3) Shell adalah pusat arahan untuk pengguna untuk berinteraksi dengan sistem dan menyokong skrip. 4) Ruang pengguna berasingan dari ruang kernel untuk memastikan kestabilan sistem. 5) Pemandu peranti menghubungkan perkakasan ke sistem operasi. 6) Pengoptimuman prestasi termasuk konfigurasi sistem penalaan dan mengikuti amalan terbaik.

Di Linux, pengurusan fail dan direktori menggunakan arahan LS, CD, MKDIR, RM, CP, MV, dan Pengurusan Kebenaran menggunakan arahan CHMOD, Chown, dan CHGRP. 1. Perintah pengurusan fail dan direktori seperti senarai terperinci LS-L, MKDIR-P membuat direktori secara rekursif. 2. Perintah Pengurusan Kebenaran seperti Kebenaran Fail Set Chmod755File, ChownUserFile mengubah pemilik fail, dan ChGRPGroupFile Change File Group. Perintah ini berdasarkan struktur sistem fail dan sistem pengguna dan kumpulan, dan mengendalikan dan mengawal melalui panggilan sistem dan metadata.

macosandlinuxbothofferuniquestrengths: macosprovidesauser-friendlyexperienceWithexcellenthardwareIntegration, manakala whilelinuxexcelsinflexabilityandCommunitysuport.macos, DevelodedByapple, diketahui
